16/06/09 00:38:52.14 M1aHpfX0.net
setlocal
cd フォルダ
endlocal
でせっかくcdしても元に戻ってしまう
557:デフォルトの名無しさん
16/06/09 00:56:26.88 mVcmv6vY.net
>>534
setlocalはそういうもんだから
逆に環境が引き継がれちゃったらsetlocal使う意味が無くなる
そういうことやりたかったら、
setlocal
set result=999
~
endlocal&set result=%result%&cd フォルダ
ってやると、環境変数を返すことも出来る
558:デフォルトの名無しさん
16/06/09 01:29:34.62 M1aHpfX0.net
>>535
ありがとうございます
そんな高度な技ができるとは知らなかったです
559:デフォルトの名無しさん
16/06/09 02:52:40.71 3N2Gwx2N.net
>>526
suffixとかかな
for /f "delims=" %%j in ('dir /a-d /b "%folder%" 2^>nul ^|^|goto :eof') do ren "%folder%" "%%~nj" &&goto :eof
でren出来なかった場合のみerrorlog吐くとかの方がスマートかも
まあバッチだし。。細かいとこ凝るならpsとかの方が
560:デフォルトの名無しさん
16/06/09 14:01:20.29 mVcmv6vY.net
>>537
for /f "delims=" %%j in ('dir /a-d /b "%%folder%%" 2^>nul ^|^|goto :eof') do ren "%folder%" "%%~nj" &&goto :eof
561:デフォルトの名無しさん
16/06/09 14:12:43.69 mVk0iXAO.net
> マルチ質問に返答するのはマナー違反って話なんだから
質問がマナー違反なんて話は知られてるが
返答がマナー違反なんて初めて聞いたけど、誰かソース知ってる人いる?
この人の妄想かな
562:デフォルトの名無しさん
16/06/09 16:04:09.94 Et4Ks3FV.net
こんなところで他人に何かを求めたりルールやマナーを押し付けるのは愚行
自分がレスしたきゃするし興味無いならスルー
自治厨ってのは自分の耐性の低さを尤もらしい大義名分で誤魔化しているだけに過ぎない
自治厨や創価みたいな制裁厨は荒らしと同じゴミ
563:デフォルトの名無しさん
16/06/10 08:47:12.85 7xQ2IbxD.net
>>539
返答しちゃうとマルチでいいんだ
って勘違いする奴がいるってことだろ
普通それぐらいわかると思うが...
564:デフォルトの名無しさん
16/06/12 22:53:45.89 T3khqEs4.net
>>541
普通と言われても、それを実際に文章で目にした記憶ないんだよな
ソース張れるか?妄想URLじゃなくてさ。
クロスポストマルチポストという言葉が生まれたニュースネットならまだしも。
個々のスレで関連性の無い2chだと正直どうでもいい。
ていうか今ニュースネットってどうなってるんだろ。まだあるんかな?
565:デフォルトの名無しさん
16/06/12 23:23:12.75 Dejri5g9.net
>>542
理解力ないってこと?
566:デフォルトの名無しさん
16/06/12 23:29:33.63 nN2o7Cuz.net
誰と闘ってるの
567:デフォルトの名無しさん
16/06/13 02:21:55.70 bKXy9+E3.net
マルチがマナー違反なら答えないほうが良いと思うが普通の考えだと思う
所詮はマナーだからもう終了しろ
568:デフォルトの名無しさん
16/06/16 16:19:50.79 Y8ybIIT3.net
マナー違反として問題になるならあっちこっちで
これがダメあれがダメとダメ出しのソースが出るんだよ。
マルチポストする方に関しては検索するとボロボロ出てくるだろ。
しかしこれがマルチポストに回答する事に関しては出てこんのだよな。
これの意味するところはつまりそこまで問題ではない、問題にする人はいないってこった。
回答する気が無いならしなければいいだけ。
回答した人に対してマナー違反だ回答するな等と文句付けるのは何様?筋違いだと思うね。
ぶっちゃけ俺も気にしないし。気にする人見たら今のように珍しいなあと思うな。
569:デフォルトの名無しさん
16/06/16 16:49:06.61 pl2Ydjf9.net
おまえらしつけーよ
下らないスレチネタで議論する暇があったら面白バッチネタの一つでも書きやがれ
で、PowerShellってどうよ?
570:デフォルトの名無しさん
16/06/16 17:50:03.03 dWCIrllM.net
Power Shellにはなんか食指が動かない(XP
571:使ってるんで) まあ簡単な奴以外はwsh(jscript)を使うな でも今Rubyが面白いかもって思ってる(Perlも入れたけどそっちは殆ど手付かず) .JScriptの中からScriptControlでRubyScriptの関数をCALLするとか変態的なことを試してるところ (.rbで作って、.js(.wsf)に埋め込むっていう非効率的な作業をやってる)
572:デフォルトの名無しさん
16/06/16 23:14:35.32 oJOkyOjy.net
パワーシェルは出来る事も多いし 痒いとこ(チンポじゃないよ)にも手が届くけど
なんとなくバッチ組めちゃうdosコマンドに比べたら難しく感じちゃうな
ただ複数のアプリの同時起動が簡単に出来るからそういう用途ではよく使ってる
573:デフォルトの名無しさん
16/06/17 07:01:08.70 TQ7oR46s.net
>>546
>>543
574:デフォルトの名無しさん
16/06/17 07:14:29.17 TQ7oR46s.net
>>547
書き方とかにちょっと違和感があるけど慣れればかなり使えるって感じ
特にバッチは文字列の扱いが色々面倒だからファイル名を切った張ったするようなケースだと PowerShell の方が楽
WPF 使って GUI もいけるし
575:デフォルトの名無しさん
16/06/17 14:10:51.86 ZjDSffK/.net
>>550
お前がな…
576:デフォルトの名無しさん
16/06/17 14:14:36.97 ZjDSffK/.net
個々人がマナー違反だと思うのはその人の勝手。
だが、「皆が」そうだというならお前以外の意見つまりソースを出せと。
そんなことも理解できんのね
577:デフォルトの名無しさん
16/06/17 14:45:53.78 kt8UtU4J.net
>>546
本来、内容はどうであれ、マルチポストの相手をすべきではないんだよ。
マルチポストとか思うから、マナーだとか言い出すんだろうけど、
コピペの荒らしだと思えばいいんだよ。相手にするヤツがバカだろう?
578:デフォルトの名無しさん
16/06/17 15:22:57.71 PGPlVx2O.net
いやー、そのレスでちょっとは盛り上がったじゃん
十分このスレでの意義はあったと思うよ
元のスレのofficeじゃスレ違いだとかいってハブって追い出したくせに
こっちに来たら追いかけてきてイチャモンつけるって性格悪いな
579:デフォルトの名無しさん
16/06/17 18:35:44.26 oyCWF+hy.net
>>555
そいつに関しては性格悪いなんてもんじゃないでしょ
わざわざ他スレへ出張って文句言う粘着性はガイキチ
池沼は相手にしないが吉
>>548-549
>>551
いや、おまえがスレチだろってツッコミ待ちだったんだがおまえら良い奴だな
ありがとう
既に.NET知ってる人は楽なんだろうけど一から覚えるの面倒臭くて。。
ましてやPSの為だけにとなるとなかなか重い腰が動かず
>ファイル名を切った張ったするようなケースだと
まさにこの用途なんだよね
バッチから文字列の扱いを少し便利にしてくれるくらいで良かったんだけど覚える量的に一気にハードル上がって面倒臭い
覚えてしまえば楽になりそうなのは分かってるので、ぼちぼちやってくわ
580:デフォルトの名無しさん
16/06/17 18:55:09.01 TQ7oR46s.net
>>554
まあ、そう言うこと
ググって部屋のなかにうんこするなとかの書き込みが少ないからうんこするぜ
って言うのと同じ
考える力のない奴に何を言ってもしょうがない
581:デフォルトの名無しさん
16/06/17 18:58:07.69 TQ7oR46s.net
>>556
対話で使えなくてもいい
将来を心配したことがない
なら vbs/jscript + wsh でもいいかも
582:デフォルトの名無しさん
16/06/19 09:59:28.72 rDn80OX3.net
>>557
うんこと考えてるのは実はお前だけってな
お前さん理想と現実の区別付いてないだろ?
583:デフォルトの名無しさん
16/06/19 11:27:46.12 Pvc+naRU.net
>>559
>>543
584:デフォルトの名無しさん
16/06/19 17:51:44.69 Ujr
585:NrWKl.net
586:デフォルトの名無しさん
16/06/19 20:28:17.53 N0SKT7vZ.net
> 2ちゃん初めてか?
まだこんなこと言ってる奴がいるんだなw
587:デフォルトの名無しさん
16/06/20 05:15:32.88 bz6tTT9I.net
そもそも「2ちゃん」という言い方自体、自称古参爺しか使わん
588:デフォルトの名無しさん
16/06/20 12:37:29.60 1rHeBxTu.net
ちゃんちゃん
589:デフォルトの名無しさん
16/06/20 12:56:47.33 XUIKeVkP.net
2chって言うよな
590:デフォルトの名無しさん
16/06/21 23:17:02.70 wIBHL76T.net
言うの?
発音はツーチャンネル?
591:デフォルトの名無しさん
16/06/22 03:22:26.83 UKX8/FIx.net
声には出さないけど「にちゃん」って読んでるな
書く時は2chって書くかな
592:デフォルトの名無しさん
16/06/22 08:59:59.99 ffHjJb8n.net
>>567
漏れも
593:デフォルトの名無しさん
16/06/24 01:13:29.70 buggiI8H.net
俺は教育テレビって言ってる
Eテレは馴染めん
594:デフォルトの名無しさん
16/06/24 02:23:17.48 iovZLto/.net
教育テレビは3チャンネルだと思ってたけど、
地デジは3ちゃんTVK♪というCM思い出して
違うことに気づいた。
595:デフォルトの名無しさん
16/06/27 10:51:32.41 IRTRDse4.net
dir /Q はオーナー名が長いとファイル名とくっついてしまう欠陥コマンドだった
596:デフォルトの名無しさん
16/06/27 13:44:52.16 cmd3G8BZ.net
会社のサーバに散在している.batファイルを片っ端から削除したい。いや、マジで。
URLリンク(el.jibun.atmarkit.co.jp)
597:デフォルトの名無しさん
16/06/27 13:56:09.99 YSZG9z+3.net
del /f /s /q *.bat
でよくね?
598:デフォルトの名無しさん
16/06/27 14:13:24.61 RStewB0e.net
個人用ローカルPCだけど俺も何に使ったか分からないbatファイルがそれなりに残ってるわw
1度整理したから大量ってほどではないけど
ニッチな用途だとファイル名だけでは用途を思い出せないのが難点
599:デフォルトの名無しさん
16/06/27 14:35:10.14 N5RLWdSz.net
batなんて使わなくなったら即削除してるから残ってるのはせいぜい20個程度だ
600:デフォルトの名無しさん
16/07/03 21:43:03.57 vq6Z+j1h.net
「削除した」なら許せるが、削除したい(削除できなかった)ならただの糞文
601:デフォルトの名無しさん
16/07/03 22:02:09.39 T1/0jYLy.net
読んでねーけど、したいけど出来ないって愚痴なんじゃねーの?
何に使うか分からんようなゴミを鯖に残してて勝手に消したら老害が何で消した?いつか使うかもしれんのに!って怒るとか
いつかって何だよって言う。たかがbatでアホかって老害SEあるあるネタ
602:デフォルトの名無しさん
16/07/03 22:37:12.83 CJuDkW1k.net
んー、そもそもバッチを使う(作る)人に対する人格否定、という感じのブログ
アナウンス出して全て消しゃいいじゃん、というのが率直な感想
でもやりたいのは、バッチを使う(作る)人の排除みたいだから、
社長になって独裁人事するのが一番の解決なんだろうね
603:デフォルトの名無しさん
16/07/06 01:43:37.05 j2aYQoha.net
整理整頓が出来ていればいい話
バッチに限った事じゃない
不要の見極めも難しいから
消せずに残ってゴミ屋敷が現実
604:デフォルトの名無しさん
16/07/07 00:24:13.51 WGF782sG.net
会社のサーバだとうちもバッチに限らずなんだかよく分からんのがいっぱいあったな
いらなさそうなのまとめて圧縮して1年後の日付書いてこの日まで使わなければ消すってしといた
605:デフォルトの名無しさん
16/07/07 14:56:47.42 TsrNo+6t.net
そうやってなんか対処してるなら話はわかるんだけど
うぜぇうぜぇ�
606:チて言うだけで自分では対処しないで放置ってのはもう…
607:デフォルトの名無しさん
16/08/09 17:07:41.16 j5HqbEBX.net
Windows 10のLinuxサブシステムを狙った攻撃が今後登場する可能性
URLリンク(srad.jp)
免疫力がつくまでしばらく待った方がいいのか知らん
608:デフォルトの名無しさん
16/08/14 22:50:59.47 r/0nUjHR.net
そもそもβなんだし、素人さんが手を出していい物じゃないんだけどな。
609:デフォルトの名無しさん
16/08/15 00:25:59.77 8W38K+Qq.net
まだcygwinのほうが安全ということなのかね
610:デフォルトの名無しさん
16/08/21 07:59:09.76 zhyP4GkP.net
今んとこサーバ用途は全く想定してないからさして問題にはならないだろう
最終的にはMacのポジションを目指すのだろうからそれまでに直しておけば良い
テクノロジーカンファレンスがSurfaceで埋まる日は来るか
URLリンク(www.buildinsider.net)
611:デフォルトの名無しさん
16/09/06 18:28:00.80 G35PExva.net
Windows標準のコマンドプロンプトウィンドウをタブ化できる「ConEmu」
URLリンク(osdn.jp)
多数のDOS画面でお仕事する人向け
612:デフォルトの名無しさん
16/09/06 18:51:20.42 rT4OuLmz.net
ConEmuも所詮バックグランドでcmd動かしてて、
cmd単独よりは少し便利になるものの、
元々の日本語の表示の不具合(端が切れる)を引き継いでるからなぁ。
cmd完全互換のまともなシェルはないものかねぇ。
613:デフォルトの名無しさん
16/09/07 18:29:47.35 b6UGEvRF.net
タブでまともに機能するのはすごいたぶちさんだけ
614:デフォルトの名無しさん
16/09/07 19:12:06.44 eCxhE93W.net
.BATと.CMDでは何が違うのでしょうか?
使える命令などに違いがあるのでしょうか?
教えてください。
615:デフォルトの名無しさん
16/09/08 00:57:15.94 54d0WlHM.net
>>589
違いは無いよ
DOSの時代からWin16の時代は拡張子はBATであり、
Win32の時代からMSはCMDに変えたがったみたいだが以前としてBATが主流となってるだけ
616:デフォルトの名無しさん
16/09/08 01:30:50.71 MGX2ZdyU.net
cmd は WindowsNT, OS/2 由来じゃなかったっけ?
例えば OS/2 だと bat にすると DOS互換ボックスでのバッチファイル動作で
cmd にすると OS/2 ネイティブ動作
617:デフォルトの名無しさん
16/09/08 02:06:01.27 54d0WlHM.net
>>591
そうだったっけ?
OS/2は殆ど使ったことない(さわりだけ)んで、拡張子batが動作したかどうか忘れちゃったんだけど
(暗黙の了解でcmdでしか使ってなかった)
618:デフォルトの名無しさん
16/09/08 02:15:48.19 54d0WlHM.net
ちなみに俺が使ってたOS/2はver.1.2のごく初期の奴だったんで
そもそもDOS互換とか存在してなかった気もする
619:デフォルトの名無しさん
16/09/08 03:45:32.33 Jzexm0YP.net
>>589
基本的には同じと思っていいけど厳密には少しだけ動作に違いがある
URLリンク(stackoverflow.com)
620:デフォルトの名無しさん
16/09/08 04:05:36.46 PAzqK7FZ.net
.bat 普通のバッチファイル用途。
.cmd ruby -x でrubyのコード埋め込む為に使用する。シンタックスハイライトをruby向けに設定。
という超ローカルな使い分けをしている
621:デフォルトの名無しさん
16/09/08 21:40:41.34 5x3R57hb.net
setlocal enabledelayedexpansion
set STR="aaa"
if STR=="aaa"(
STR = "bbb"
echo !STR!
)
echo !STR!
echo %STR%
遅延環境変数が分からない
622:のですが、自分の環境だと全て"aaa"になります。 どこが間違っているんでしょうか?
623:590
16/09/08 21:53:39.72 5x3R57hb.net
すいません。適当に書いてしまったのを訂正します
・"bar"が出て上手く行かないケース
@echo off
setlocal enabledelayedexpansion
set foo2="bar"
if %foo2% == "bar" (
set foo2 = "hoge"
echo !foo2!
)
pause
・"hoge"が出て上手く行くケース
@echo off
setlocal enabledelayedexpansion
set foo="bar"
if %foo% == "bar" (
set foo="hoge"
echo !foo!
)
pause
この2つの違いが分かりません。
624:デフォルトの名無しさん
16/09/08 21:58:24.35 5x3R57hb.net
自己解決しました
foo2と=の間に空白があるのが原因でした。
バッチは文字列を代入する際には空白があってはいけないのですね。
set foo2= "hoge"
としたら上手く行きました。
set /a foo2 = 10
では空白があっても行けたのですが、文字列の場合はダメなんですね。
625:デフォルトの名無しさん
16/09/09 03:51:09.43 LpeB3e0i.net
Linuxのシェルスクリプトでも、変数代入時、= の前後に、半角空白を入れられない
a=b
a = b これはダメ
こういう点が、プログラミング言語としてはクソなんだよ。
PowerShell_ise を使いな
626:デフォルトの名無しさん
16/09/09 06:34:14.46 Sx9RRTJO.net
>この2つの違いが分かりません。
そんな違いわかりたくもない
バッチファイルでif文をトラブルなく使う - Qiita
URLリンク(qiita.com)
バッチファイルでif文を使っていてハマったので、ハマらないための書き方と注意点をまとめてみた
解決方法
何も考えず必ず以下の形で書く。
if 条件 ( ←(1)
call :サブルーチン名 引数 ←(2)
) else if 条件 ( ←(3)
call :サブルーチン名 引数
) else ( ←(4)
call :サブルーチン名 引数
) ←(5)
627:デフォルトの名無しさん
16/09/10 14:10:07.42 WyiyFmBQ.net
>>597
ダブルクォート記号を意図して含めたいならそういう記述もありだろうね
だけど、純粋に文字列だけ比較したいだけなら変数名も含めてくくって、あとは判定部分で整形する方が自由度がある
set
628:デフォルトの名無しさん
16/09/10 14:14:02.54 WyiyFmBQ.net
途中で切れた?全角でリトライ
SET "foo= b a r "
IF "%foo%"==" b a r " (
IF "%foo%" == " b a r " (
のようにすれば前後の空白も含めて評価されるし、この場合どちらも同じ結果が得られる
なので、>>598の「バッチは文字列を代入する際には空白があってはいけないのですね。」は誤り
変数の文字列前後、if文のイコール記号の前後の空白の有無で意図しない比較結果になり得る記述は避けたほうがいいのは自明
環境変数の遅延展開に関しては、カッコで囲んだ複文の挙動を把握した上で適切に使う
環境変数はあとから再利用する性質上、意図しない文字や空文字になってしまうのが一番怖い
別解としては、call set "foo=hoge" があり、echo;%%foo%% などのようにパーセント記号を重ねても同じ結果が得られる
こちらは setlocal enabledelayedexpansion は不要、この方法は公式とは言えないのでユーザーのお好み次第といったところ
629:デフォルトの名無しさん
16/09/11 01:07:52.20 4x/hjQLW.net
sqlite3のコマンドラインツールでDB読込み時間を測って遊んでたら
sqlite3 hoge.db "SELECT * FROM TEST" > nul よりも
sqlite3 hoge.db "SELECT * FROM TEST" > "c:\Temp\hoge.txt" のほうが
出力完了までの時間が短かったんですが、出力をnulに捨てるのって
普通にファイルに吐くより遅くなるもんなんでしょうか。
630:デフォルトの名無しさん
16/09/11 01:24:31.36 zfXOe+JX.net
>>603
常にそうなるの?
たまたまじゃなくて?
db読み込みの時間とかが関係してきそうな気がするし
それに
631:write時間は以外に掛からないんでファイルがでかくなければnulとの差はつかない (read時間は掛かるし実行時間にかなりばらつきが出る、また2回目以降はキャッシュからになる)
632:デフォルトの名無しさん
16/09/11 02:05:36.54 zfXOe+JX.net
>>603
ちょっと試してみた
確かにnulの方が時間が掛かる
そこで、sqlite3の代わりに、type xxx.txt >yyy.txtで試してみた
やっぱりファイルに書き出すよりnulの方がはっきり時間がかかる
何故なのかは分からん、スマン
633:デフォルトの名無しさん
16/09/13 21:52:06.22 NwZGDC4j.net
コマンドプロンプトから実行して
処理しますか?(Y/N)⇒処理⇒処理完了後F3キー押すとして終了
するツールを毎日ポチらないといけないのですが
txtにYとF3を書いてリダイレクトで自動入力すれば楽にポチれる気がするんですが
F3をtxtファイルにどう書けばいいのかわかりません、助けてください
634:デフォルトの名無しさん
16/09/14 06:17:54.15 xpMA1gBQ.net
F3は無理だと思うけど・・・
635:デフォルトの名無しさん
16/09/14 08:44:57.03 f2EPB9Ji.net
>>606
uwscでやれば?
636:デフォルトの名無しさん
16/09/14 17:27:36.03 Jy6DKzEX.net
>>608
ありがとうございます
EXECでバッチファイル起動してYとF3入力してexit⇒ENTERで終了するようマクロ組みました
タイマー起動ソフトでUWSを指定時間に実行するようにしたので何もしなくてよくなりました
ありがとうございます
637:デフォルトの名無しさん
16/09/19 03:08:13.70 3gpWvjZ8.net
cmdですが
schtasksでstartコマンドがうまく使えません
/tr "start フルパス実行ファイル名"
※パスにはスペース無しです
638:デフォルトの名無しさん
16/09/19 03:34:12.50 rks5/FmO.net
>>610
cmd内部コマンドを起動するように登録するなら
"cmd /c start xxx"
だけど、単に
/tr xxx
じゃああかんの?(xxxはフルパスの実行ファイルなんでしょ?)
639:デフォルトの名無しさん
16/09/19 04:07:56.77 3gpWvjZ8.net
>>611
速いレスポンスありがとうございます
おっしゃる通りどちらもいけました!
もともとスペースありのパスで悩んで
/tr "フルパススペース混じり" …1
/tr "\"フルパススペース混じり\"" …2
上記1.2から始まり詰まってましたが
お陰様でstartの使い方がわかりました
640:デフォルトの名無しさん
16/09/19 12:05:07.29 mqRkSqP8.net
startは引数にスペースが混じるとおかしくなる
その場合は第一引数に空文字列入れると良い
start "" "c:\program files~"
641:デフォルトの名無しさん
16/09/22 20:07:59.66 yIBGfr99.net
taskkill /im explorer.exe
start explorer
をバッチにしてエクスプローラ再起動に使ってたんだけど
最近explorer.exeが見つかりませんってなってkillできないんだけど何でだろう
タスクマネージャからなら止められるしPID指定でも止められるんだけど
642:デフォルトの名無しさん
16/09/27 11:38:03.47 clgfgzqk.net
10か
643:デフォルトの名無しさん
16/09/28 19:18:04.93 zhCs69qF.net
下記バッチファイルで call を実行する
@echo off
set a1=%%a2%%
set a2=%%a3%%
set a3=%%a4%%
set a4=%%a5%%
call echo %a1%
call echo %a1% | more
pause
結果は
%a3%
%a4%
なぜか表示が違う
パイプを使うと変数の展開が一回増えるようだ
644:デフォルトの名無しさん
16/09/29 00:33:45.25 RC/Dq8j5.net
パイプは、子タスクでインスタンスは別だと思うよ
set a=1
echo %a%|(more|set a=2)
echo %a%
645:デフォルトの名無しさん
16/09/29 00:34:51.35 RC/Dq8j5.net
echo %a%|(more&set a=2)
646:デフォルトの名無しさん
16/09/29 02:15:55.37 HmIZKCJu.net
echo %a1%
echo %a1% | more
%a2%
%a3%
647:デフォルトの名無しさん
16/09/29 02:29:13.86 HmIZKCJu.net
call call echo %a1%
call call echo %a1% | more
%a4%
%a5%
648:デフォルトの名無しさん
16/10/07 02:33:21.18 E4yfr
649:V8y.net
650:デフォルトの名無しさん
16/10/07 02:39:36.76 E4yfrV8y.net
>>621
追記ですが
"/"の数は変動します
651:デフォルトの名無しさん
16/10/07 03:13:06.25 PWoZvLSt.net
bat素人が適当に書いたらこうなった
set token_number=1
:start
for /f "tokens=%token_number%,* delims=/" %%a in ("/aaa/bbb/ccc") do if "%%b"=="" (
set hoge=/%%a
) else (
set /a token_number=token_number+1
goto start
)
echo %hoge%
pause
652:デフォルトの名無しさん
16/10/07 03:33:35.13 RDmrItg+.net
ちょっと邪道だけど
powershell -Command
653:デフォルトの名無しさん
16/10/07 03:34:29.48 RDmrItg+.net
切れたので再送
powershell -Command Split-Path -Path /aaa/bbb/ccc -Leaf
654:デフォルトの名無しさん
16/10/07 03:44:17.59 273HGXTN.net
>>621
tmp に & や % 等々が入っていない、ダメな文字が無いという楽観的な状態なら
set tmp=/aaa/bbb/ccc/ddd eee
call %tmp:/=&set tailpart=%
echo %tailpart%
655:デフォルトの名無しさん
16/10/07 10:20:31.14 uWLqn+Rg.net
echo [ERROR][%~n0][%date% %time%] エラー出た(ERRORLEVEL=%ERRORLEVEL%)
これ標準エラー出力で出力するのってどうやるんですか?
656:デフォルトの名無しさん
16/10/07 10:47:05.46 yoIkF7ck.net
>>627
標準出力先を標準エラー出力先と同じになるようにリダイレクトしてやるとかかな
(意図がわからんからこれで解決するのかどうかは知らんけど)
echo xxx 1>&2
例
2>errout.txt 1>&2 echo エラー(err no=111)
657:デフォルトの名無しさん
16/10/07 11:05:50.41 yoIkF7ck.net
出力先が同じだから、2>errout.txt は >errout.txt に書き替えても同じ結果になることからも分かるように
やってることはあくまで出力先を同じにしてるだけなので、標準エラー出力のみを取り扱ってるわけではないことに留意
(なお 1> の 1 は省略可能なので、 1>&2 は >&2 と書くことも可能)
658:デフォルトの名無しさん
16/10/07 11:23:31.75 uWLqn+Rg.net
echo aaa
echo bbb 1>&2
echo ccc
で試したところ望みどおりの動作になりました
ありがとうございます
659:デフォルトの名無しさん
16/10/07 11:44:29.04 5wS7M9ck.net
>>621
案1:
FOR /F "delims=" %%I IN ("/aaa/bbb/ccc") DO ECHO %%~nxI
案2:
CALL :SUB "/aaa/bbb/ccc"
GOTO :EOF
:SUB
ECHO %~nx1
660:デフォルトの名無しさん
16/10/07 12:09:19.90 PWoZvLSt.net
色んなやり方があるんだなあ勉強になる
661:デフォルトの名無しさん
16/10/08 07:09:00.83 sXvXMvPu.net
@echo off
set "a=/aaa/bbb/ccc\ddd"
set "b="
call :x a b
echo "%a%"
echo "%b%"
pause
goto :eof
:x
setlocal enabledelayedexpansion
set "a=/!%1!"
set b=-1
:y
set "c=!a:~%b%,1!"
if "!c!" == "/" goto z
set /a b-=1
goto y
:z
set "c=!a:~%b%!"
endlocal & set "%2=%c%"
goto :eof
662:デフォルトの名無しさん
16/10/09 20:38:11.04 mq9cB08l.net
7z.exe x AAA.zip -oBBB >hoge.txt
7z.exeで展開してるんだけど、終了するまえに、
次の処理に行ってしまい、その後がエラーになる。
7z.exeの終了を待つには、どうしたらいいのですか?
>hoge.txtは必要。
start /wait 7z.exe x AAA.zip -oBBB >hoge.txt
では、hoge.txtが空だし、コマンドプロンプトの窓がもう一個開くし。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)
663:デフォルトの名無しさん
16/10/09 21:25:06.80 DFuD
664:/t4t.net
665:デフォルトの名無しさん
16/10/10 09:40:47.22 UJJq0Lfa.net
>>635
ありがとうございます。
10回くらいテストして、それ「start /B /wait "" 」でいけました。
666:デフォルトの名無しさん
16/10/12 15:15:40.33 CXMCNpce.net
for %%a in (“*.mkv”) do ffmpeg.exe -i %%a -b:v 3000k -acodec ac3 -ar 48000 -vcodec libx264 D:\encoded\%%~na.mp4
mkvとflvを入力に使いたいです
二重ループ以外に方法ありませんかね?
667:デフォルトの名無しさん
16/10/12 15:33:04.97 V1BPQ8PQ.net
`dir /b *.mkv;*.flv`をキャプチャすればいいんじゃないの
自分なら2行にコピペするがw
668:デフォルトの名無しさん
16/10/12 15:35:36.60 CyghQ6/+.net
"*.*v"
他にvが付くもの無ければ
669:デフォルトの名無しさん
16/10/12 15:38:43.19 CXMCNpce.net
>>638
すみません
2行にコピペするとはどういうことですか?
>>639
私も考えたのですがwmvがありました
670:デフォルトの名無しさん
16/10/12 16:07:30.74 aOSR32QX.net
for %%a in (*.mkv *.flv) do ...
671:デフォルトの名無しさん
16/10/12 16:12:00.02 YqqdfgOM.net
>>640
*.mkvで処理と*.flvで処理と2行for文を書くという意味じゃないかな?
for /f "tokens=*" %%a in ('dir /b *.mkv *.flv') do ~
とか
dir /b *mkv>files.tmp
dir /b *.flv>>files.tmp
for /f "tokens~*" %%a in (files.tmp) do ~
del files.tmp
とか色々とか色々と出来るよ
672:デフォルトの名無しさん
16/10/12 16:51:21.25 k+jI1aQa.net
質問です。サブディレクトリのファイルで、0バイトのファイルだけを削除したいです。
以下のページにあるサンプルをベースに、dirに /s をつけてサブディレクトリも
対象とするようにしました。
バッチで自動的に作成したファイルを容量チェックして削除する方法ってありますか? (DOSプロンプト活用相談室LOG)
URLリンク(fpcu.on.coocan.jp)
実行してみると、0バイト以外のファイルも条件が成立してしまい、
動作してくれません。OSがwindows10のせいでしょうか。
FOR /F %%F IN ('dir /s /B') DO ( CALL :CheckFile %%F )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF NOT %FileAttrib:~0,1%==d (
IF not "%~z1" == "0" (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
)
EXIT /B
==をEQUに変えてみたり、ダブルクォートをつけたりしましたが変化なしでした。
どのように直せば、0バイトのみが引っかかるようにできるか、宜しくお願いします。
なお、上記コードは、安全のためdelはREMをつけたままです。
673:デフォルトの名無しさん
16/10/12 17:01:12.97 k+jI1aQa.net
すいません補足です。
>IF not "%~z1" == "0" (
これは、notがないのが正常な状態です。
なにをやっても条件が成立してしまうので、
ためしにnotをつけて、論理が反転するか試したところ、
これも全部条件が成立してしまいました。
その実験をしたときの残骸のnotが残ってしまいました。
674:デフォルトの名無しさん
16/10/12 17:10:16.64 CyghQ6/+.net
if %~z1==0
のように書く。==の両側にスペース入れたらダメ
675:デフォルトの名無しさん
16/10/12 17:14:15.79 CyghQ6/+.net
それでもダメだったら
CALL :CheckFile %%~fF
を試してみて
676:デフォルトの名無しさん
16/10/12 17:19:24.35 CyghQ6/+.net
IF NOT %FileAttrib:~0,1%==d
これ必要?
dir /a-d /b /s としておけば要らない
677:デフォルトの名無しさん
16/10/12 17:32:19.00 k+jI1aQa.net
ありがとうございます。指摘の件を全て直しましたが、ダメでした。
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF %~z1==0 (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
REM DEL %1
)
EXIT /B
実行結果
IF 1695606 == 0 (
"F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。
678:デフォルトの名無しさん
16/10/12 17:37:43.49 h3rHiOkq.net
set hoge="hage te naiyo"
とやると、%hoge%でダブルクォーテーションも読み込んでしまいます
対処法教えて下さい
679:デフォルトの名無しさん
16/10/12 17:44:13.80 X88zouZU.net
パスにスペースが入ってんじゃ?
for /f "delims=" %%i in ('dir /a-d /b /s *.*') do if %%~zi EQU 0 del "%%~fi"
680:デフォルトの名無しさん
16/10/12 17:46:49.24 tJlO+qdh.net
set "hoge=hage te naiyo"
か
set hoge=hage te naiyo
そもそも "" でくくらない
681:デフォルトの名無しさん
16/10/12 17:54:18.24 YqqdfgOM.net
>>648
本当にそんな表示なのか?
上の IF 1695606 == 0 ( を書いてるということはbatの展開された実行ステートメントを表示してるだけじゃないのか?
正確には
IF 1695606 == 0 (
ECHO "F:\TEST\file.txt" はファイルサイズが 1695606 で、0 なので 削除します。
REM DEL F:\TEST\file.txt
)
と4行表示されただけなんじゃないの?
それと、半角空白の存在するファイル名があったらエラーになるよ
"tokens=*"とか"delims="をつけて、引数は""で囲んで渡すようにした方がいい
(さらに^とかの文字もファイル名に含まれてる可能性があるなら引数渡しは諦めて環境変数で渡すようにする)
682:デフォルトの名無しさん
16/10/12 17:56:29.96 CyghQ6/+.net
for /f "usebackq delims=" %%F in (`dir /a-d /b /s`) do if %%~zF==0 echo %%~F
これで0バイトだけechoされるはずだと思うけど
>>649
set "hoge=hage te naiyo"
683:デフォルトの名無しさん
16/10/12 18:07:46.52 YqqdfgOM.net
>>649
もし何らかの理由で""を付いたままで代入しなくてはいけないのなら、その後で取ることは出来る
set hoge=%hoge:"=%
とか
set hoge=%hoge:~1,-1%
とか
まあ後者は"が付いているかどうかチェックした方がいいけど
if ^%hoge:~0,1% equ ^" set hoge=%hoge:~1,-1%
684:デフォルトの名無しさん
16/10/12 18:12:36.27 CyghQ6/+.net
後から外す場合はcallやforで%~1や%%~Iでも可
685:デフォルトの名無しさん
16/10/12 18:13:42.95 k+jI1aQa.net
>>652
すみません、こちらの勘違いでした。教えていただいたコードで動きました。
echo off していないため、条件が成立しないコードが表示されてるのを見て、
あたかも実行されているかのように勘違いしてるだけでした。
この手のトラブルが嫌いなので対象のファイル名に空白は入っていませんでした。
完成形ですが、空白が含まれているファイル名も処理する場合は、以下で大丈夫でしょうか。
echo off
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
echo 処理終わり。
pause
EXIT /B
:CheckFile
SET FileAttrib=%~a1
IF "%~z1"=="0" (
ECHO "%1" はファイルサイズが %~z1 で、0 なので削除します。
DEL "%1"
) else (
ECHO "%1" はファイルサイズが %~z1 で、削除しません。
)
EXIT /B
686:デフォルトの名無しさん
16/10/12 18:31:53.33 k+jI1aQa.net
うーん・・・このバッチだと、0バイトかどうか調べる対象ディレクトリが1000個、総ファイルが10万個とか有ると、
最初のforから全然進んでくれないようです。
core-i5で10分待っても開始されず。ディスクの能力じゃ無く、BATのCPU消費率が上がります。
>>653さんの書き方で、大量ファイルの処理時の挙動は変化するか、これから試してみます。
大量処理に適した書き方などがあったらご教示ください。
687:デフォルトの名無しさん
16/10/12 18:44:53.26 YqqdfgOM.net
>>657
そんな大量のファイルは無いので定かではないけど、多分バッファが溢れてるんじゃないかと思う
一旦ファイルに書き出したらどうだろ?
dir /a-d /s /b>list.tmp
for /f %%F in (list.tmp) do
688:デフォルトの名無しさん
16/10/12 18:59:59.00 CyghQ6/+.net
10万とか処理させたこと無いけどバッチよりもPowerShell使った方が良いんじゃね?
689:デフォルトの名無しさん
16/10/12 19:01:10.45 RjRHLuRO.net
>>642
ありがとうございます
出来ました
それともう一つ
エンコードの進捗状況を表示する事ってできませんかね?
12/87(ファイル)みたいな感じで
690:デフォルトの名無しさん
16/10/12 20:02:06.24 nxsWiPWy.net
forfiles使う方法も
forfiles /s /c "cmd /c if @isdir==FALSE if @fsize==0 del @file"
691:デフォルトの名無しさん
16/10/12 20:08:20.15 IaZq30Xa.net
Windows 10 だと rd hoge /S /Q でなかなかhogeディレクトリを削除できないけど、
なにかいい方法ありますか?
692:デフォルトの名無しさん
16/10/12 20:19:09.72 WWSUEmVo.net
>>661
for が速いとは言わないが forfiles は輪をかけて遅いから辛いんじゃないかな
693:デフォルトの名無しさん
16/10/12 20:31:06.50 YqqdfgOM.net
>>660
大昔DOSにあったansi.sysのようにエスケープシーケンスが使えたら可能なんだけどね
噂じゃwinsows10でエスケープシーケンスが使えるようになったとかの話もあるけど真偽のほどはどうなんだろ
694:デフォルトの名無しさん
16/10/13 00:46:44.28 cRZfvb+W.net
>>656
以下に修正したほうがいいけど、ざっと見ただけだから他にもあるかもw
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
↓
FOR /F
695:デフォルトの名無しさん
16/10/13 00:49:54.35 cRZfvb+W.net
FOR /F %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile %%~fF )
↓
FOR /F "delims=" %%F IN ('dir /a-d /s /B') DO ( CALL :CheckFile "%%~fF" )
IF "%~z1"=="0" (
↓
IF %~z1==0 (
ECHO "%1" はファイルサイズが
↓
ECHO "%~1" はファイルサイズが
DEL "%1"
↓
DEL "%~1"
サブルーチンへ引数を渡す際はダブルクォート記号が過不足なく評価されているか実行前に要テストね
それと、ifの数値比較についてはヘルプ読むべし。数字以外を含むと文字列比較になるから
696:デフォルトの名無しさん
16/10/13 01:11:54.49 nRww2f6N.net
>>652が指摘してるけど、
もしファイル名が "a^b.txt" だったり、 "ab%cd%ed.txt" だったりしたらエラーになると思う
697:デフォルトの名無しさん
16/10/13 02:20:45.86 9ieIMwqB.net
>>657
FOR /R %%F IN (*.*) DO ( CALL :CheckFile %%~fF )
にしたらマシになる?
698:デフォルトの名無しさん
16/10/13 02:28:09.62 9ieIMwqB.net
あ、折角指摘が出てたのに修正漏れ
%%~fF → "%%~fF"
699:デフォルトの名無しさん
16/10/13 02:30:01.50 nRww2f6N.net
>>668
本来の目的だった半角空白のことを忘れたんか
700:デフォルトの名無しさん
16/10/13 08:14:45.67 CLiojDhV.net
>>667
そんなのまで対応しないといけないなら vbs とか PowerShell にした方がいいと思う
701:デフォルトの名無しさん
16/10/13 19:02:37.99 tpWzBOlc.net
call するなら環境変数で渡せば問題ない
つうか直接に del すりゃいいだけだろ
for /r %%i in (*) do if %%~zi == 0 del "%%~fi"
ファイル名に ^ とか % とか ユニコード特有文字とか有っても問題ない
あと、==の両側にスペースがダメとか意味不明
702:デフォルトの名無しさん
16/10/13 23:49:13.04 BSlfrai+.net
for %%a in (*hoge.txt) do ~
この場合、ファイル名がaiueohoge.txtだった場合、aiueoだけを抜き出す方法有りませんか?
%%~naみたいな演算子?でお願いします
703:デフォルトの名無しさん
16/10/14 01:11:11.25 Ep7xlThW.net
>%%~naみたいな演算子?でお願いします
無理
一旦環境変数に入れて置換でhoge.txtを消し残りを取り出す事%fname:hoge.txt=%や
%fname:~0,-8%なら可能
set fname=%%~na
echo %fname:~0,-4%
704:デフォルトの名無しさん
16/10/14 03:21:39.34 onADalnL.net
@echo off
set
705:デフォルトの名無しさん
16/10/14 03:24:46.91 onADalnL.net
set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call echo "%%c:~0,%b%%%"
706:デフォルトの名無しさん
16/10/14 20:38:01.10 YifyNonQ.net
ありがとうございます
set
707:デフォルトの名無しさん
16/10/14 20:40:05.91 YifyNonQ.net
"ありがとうございます
set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & HOGE "%%c:~0,%b%%%"
ここでHOGEに処理を入れ、"%%c:~0,%b%%%"をファイル名として使えばいいんですかね?
それとfor文で入力に使った*hoge.txtのだけ*hogeだけ抜き出したい場合は
708:どうすればいいんでしょうか
709:デフォルトの名無しさん
16/10/14 22:54:24.45 +Ryxbx0f.net
>>678
call echo %%c:~0,%b%%%
は環境変数の遅延展開を使わず展開させる方法だから、別の処理で置き換えるなら、
HOGE !c:~0,%b%!
のように!記号でくくる方向で(call foo はどのコマンドでも使えるわけではないため)
ファイル名の抜き出しは、パラメーターで調整できると思う
バッチパラメーターについては「call /?」あたりから
710:デフォルトの名無しさん
16/10/14 23:02:08.75 +Ryxbx0f.net
ID違うからわかると思うけど、>>676とは別人なのであしからず(言い忘れすまそ)
711:デフォルトの名無しさん
16/10/14 23:39:49.51 Ep7xlThW.net
>aiueohoge.txtだった場合、aiueoだけを抜き出す方法有りませんか?
に>>676が示してくれただけで
>HOGEに処理を入れ、"%%c:~0,%b%%%"をファイル名として使えばいいんですかね?
そんな質問されてもファイル名として使うのかどう処理するのかとか分かる訳ねーだろ
aiueoをリネームに使うのか?何がしたいのか分からん事には答えようがない
712:デフォルトの名無しさん
16/10/15 00:10:29.36 GrBj6Sia.net
>>678 質問の意図がよく分からん
set "fname=*hoge.txt" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call :y "%%c:~0,%b%%%" "%%c%%"
goto :eof
:y
echo hoge "%~1" "%~n2"
713:デフォルトの名無しさん
16/10/15 23:20:33.46 DDtj3KwG.net
バッチ初心者です。
Windowsのタスクで指定時間した時間になったら、バッチファイルで指定した常駐ソフトを再起動(終了→起動)させたいのですが、
taskkill /f /im app.exe
start /MIN "" "C:\app.exe"
のようにして最小化(/MIN)で起動するようにすると、そのソフトは何故かウインドウのスクロールバーが何故か消えてしまいます。
なので一旦アクティブで起動させてスクロールバーを表示させてから最小化したいのですが、方法がわかりません。
taskkill /f /im app.exe
start "" "C:\app.exe"
で起動させたあと、アクティブなapp.exeをコマンドで最小化する方法があったら教えてください。
よろしくお願いします。
714:デフォルトの名無しさん
16/10/16 06:33:42.07 e+WiyjQC.net
バッチにそんな機能はない
ahkなら
IfWinExist ahk_exe app.exe
WinMinimize
715:672
16/10/16 10:52:23.32 lNEScQ2P.net
抽象的な事を言って困らせてすみません
何をやりたいのかと言うと、youtubeから落とした動画がhoge -【DASH】.mp4とhoge - 【DASH】.m4aとなっているので、
これを
ffmpeg -i hoge - 【DASH】.mp4 -vcodec copy -i hoge - 【DASH】.m4a -acodec copy hoge.mp4
とエンコードして、
hoge【DASH】.mp4をforで検索して、その拡張子を取ったものを入力として使い、出力ファイル名として、hoge.mp4としたかったのです
716:デフォルトの名無しさん
16/10/16 17:03:52.47 z1QBGf3F.net
>>660
set /p で改行を入れない文字列を出力して
コントロールコードのBSで消す
@echo off
set bs=[BS]
set delline=%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%%bs%
for /L %%i in (1,1,10) do (
set /p x=%delline%%%i/10 <nul
timeout /t 1 >nul
)
717:デフォルトの名無しさん
16/10/16 19:44:42.76 l/p5e+57.net
>>685
set "fname=* - 【DASH】.mp4" & set b=-1
setlocal enabledelayedexpansion
:x
if not "!fname:~%b%,1!" == "*" set /a b-=1 & goto x
endlocal & set /a b=%b%+1
for %%a in ("%fname%") do set "c=%%~nxa" & call :y "%%c:~0,%b%%%" "%%c%%"
goto :eof
:y
ffmpeg -i "%~n2.mp4" -vcodec copy -i "%~n2.m4a" -acodec copy "%~1.mp4"
718:デフォルトの名無しさん
16/10/16 21:03:50.48 cWFHk7WJ.net
>>686
コントロールコードを挿入できない人用
set bs=[BS]
↓
for /f "delims=0" %%I in ('cmd /u /c echo 〈') do set bs=%%I
719:その1
16/10/18 10:49:49.38 492hutXa.net
サーバサービスの起動条件がスタートアップ状態が自動でありながら
開始になっていないものをバッチで出力したい
とりあえずSCコマンドを使ってこんなことすると
sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt
下記のような起動していないサービスの名前がテキストに吐かれる
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
SERVICE_NAME: aspnet_state
SERVICE_NAME: AudioEndpointBuilder
SERVICE_NAME: AudioSrv
SERVICE_NAME: AxInstSV
SERVICE_NAME: BDESVC
SERVICE_NAME: Browser
(以下 略)
720:その2
16/10/18 10:50:03.97 492hutXa.net
そしてサービスのスタートアップ状態を調べるには
sc qc [サービス名]で表示される
sc \\HOGE qc AeLookupSvc |findstr "SERVICE_NAME START_TYPE"
この2つを組合せればフルオートで起動条件がスタートアップ状態が自動でありながら
開始になっていないものを出せるはずなんだが
「SERVICE_NAME:」←これが邪魔なんだ
教えてエロい人
これが消せたら下記でフルオートできるはず
@for /F %%=a in ('hoge.txt') do (
sc \\HOGE qc %%a
)
721:デフォルトの名無しさん
16/10/18 12:27:03.23 6Un6ctsT.net
for /f "tokens=1*" %%A in (hoge.txt) do echo %%B
722:デフォルトの名無しさん
16/10/18 12:44:29.69 oqQNu1fO.net
for /f
723:デフォルトの名無しさん
16/10/18 12:46:48.12 oqQNu1fO.net
for /f "usebackq tokens=2*" %%a in ("hoge.txt") do sc \\HOGE qc %%a
724:デフォルトの名無しさん
16/10/18 12:59:57.92 oqQNu1fO.net
"tokens=1*" %%b が正しい
725:デフォルトの名無しさん
16/10/18 13:04:01.66 492hutXa.net
面目ない、誤解させてしまったかも
オイラが知りたいのは
sc \\HOGE query state= inactive |find "SERVICE_NAME" >hoge.txt
で出力される下記を
SERVICE_NAME: AeLookupSvc
SERVICE_NAME: ALG
SERVICE_NAME: AppIDSvc
SERVICE_NAME: AppleChargerSrv
SERVICE_NAME: AppMgmt
(以下 略)
先頭の文字列「SERVICE_NAME:」を外して出力したいというのが主旨です
AeLookupSvc
ALG
AppIDSvc
AppleChargerSrv
AppMgmt
(以下 略)
726:デフォルトの名無しさん
16/10/18 13:39:39.76 oqQNu1fO.net
for /f "tokens=1*" %%a in ('sc \\HOGE query state^=inactive ^| find "SERVICE_NAME"') do echo %%b >>hoge.txt
727:デフォルトの名無しさん
16/10/18 13:41:17.91 l1RYXy70.net
サービス扱うならPowerShellの方が楽でいいよ。
バッチから呼ぶならこんな感じ。
powershell -command
728:デフォルトの名無しさん
16/10/18 13:44:58.91 l1RYXy70.net
ダブルクオーテーション使うとそこで切れるんだけど書き込めてる人との違いってなんなんだろう
729:デフォルトの名無しさん
16/10/18 13:49:59.99 l1RYXy70.net
powershell -command ”Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}”
730:デフォルトの名無しさん
16/10/18 13:51:45.76 flBcMs6G.net
てすと
powershell -command "Get-Service | ?{$_.StartType -eq 'Automatic' -and $_.Status -eq 'Stopped'}"
731:デフォルトの名無しさん
16/10/18 13:52:36.16 UJ1l7XRj.net
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc \\HOGE query state^= inactive') do (
if "%%i"=="SERVICE_NAME" set name=%%j
echo;!name:~1!>hoge.txt
)
732:デフォルトの名無しさん
16/10/18 17:21:44.41 IWtXyw3/.net
ありがとうございます
早速試してみたのですが・・・
まずパワーシェルの方は「$_.StartType -eq 'Automatic'」これが効かないようです
(「$_.Status -eq 'Stopped'」こちらは効いてます)
バッチの方は1件目の「WwanSvc」だけで終ってしまうようです
733:デフォルトの名無しさん
16/10/18 17:24:37.38 XKgIhtEU.net
バッチファイルってWindowsタブレットで使える?
734:デフォルトの名無しさん
16/10/18 17:25:51.36 IWtXyw3/.net
大事な事を忘れてました
CL:Windows7プロ SP1(32bit)6.1.7601
SV:WindowsSV 2008R2 SP1(64bit)
735:デフォルトの名無しさん
16/10/18 17:59:25.19 oqQNu1fO.net
>「WwanSvc」だけで終ってしまう
>hoge.txtと上書きしてるんじゃ?>>hoge.txtと追記になってる?
736:デフォルトの名無しさん
16/10/18 20:40:09.09 UJ1l7XRj.net
アウチ!
ミスってた
>>705の通り。695追記になってない
×echo;!name:~1!>hoge.txt
〇echo;!name:~1!>>hoge.txt
737:デフォルトの名無しさん
16/10/18 22:14:57.94 N6eA0nOq.net
なるほど、追記になってなかったんですね
ただ、今度は同じサービス名が8回ずつ記録されるようになってしまいました
PCがおかしいのかなとwindows7とwindows8.1、そして懐かしのWindows2000で試しても
同じように8回ずつ記録されてしまうようです
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
AdobeFlashPlayerUpdateSvc
ALG
ALG
ALG
ALG
ALG
ALG
ALG
ALG
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
AppIDSvc
738:デフォルトの名無しさん
16/10/18 22:41:11.76 UJ1l7XRj.net
type nul>hoge.txt
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('sc query state^= inactive') do (
if "%%i"=="SERVICE_NAME" (
set name=%%j
echo;!name:~1!>>hoge.txt
)
)
739:デフォルトの名無しさん
16/10/18 23:32:59.96 N6eA0nOq.net
>>708
成功しました
カッコの有無でなんでこんなに違うんだろうと不思議です
740:デフォルトの名無しさん
16/10/19
741:01:04:29.51 ID:OIm1eZAK.net
742:デフォルトの名無しさん
16/10/19 01:12:10.60 cKBmHXZY.net
そんな回りくどい事しなくても>>696で出来んじゃん
743:デフォルトの名無しさん
16/10/19 07:11:53.90 Jbfd2Dlj.net
>>696は一瞬コマンド窓が開くだけで動かなかったのです
744:デフォルトの名無しさん
16/10/19 07:56:59.52 OiCCOICb.net
>>698
2chのバグだろ
書き込み確認画面が出る際、" を使うと、そこで文字列の終了とみなされる。
" を、\" とエスケープすれば、どうかな?
745:デフォルトの名無しさん
16/10/19 12:52:41.93 nMHfZfYD.net
" と文字参照を使って書き込めばいいのでは?
結果として " となるはず。
746:694
16/10/19 13:03:34.54 fhJbq8nW.net
JaneXenoでは特別な事しなくても書き込めた
747:デフォルトの名無しさん
16/10/20 18:11:41.71 fyY9mWCP.net
いっつもStyleで書いてるけど"で切れたことなど一度もないけどなあ
748:デフォルトの名無しさん
16/10/20 18:13:00.13 1rA0OcU3.net
>>687
遅くなってすいません
無事動きました
ありがとうございます
749:デフォルトの名無しさん
16/10/20 19:03:20.93 LBhOxlVJ.net
ダブルクオーテーションで切れるのこれっぽい。
スレリンク(unix板:777番)
自分も確かにこのケースだった。
750:デフォルトの名無しさん
16/11/02 06:03:13.96 CHmLMhVd.net
バッチファイル終了のお知らせ
“Microsoft Flow”が正式公開。さまざまなサービスを組み合わせた自動処理が可能 - 窓の杜
URLリンク(forest.watch.impress.co.jp)
751:デフォルトの名無しさん
16/11/02 06:40:56.27 w2Q1/JQP.net
アイデアは良いと思うが
>さまざまなアプリやサービスを組み合わせた自動処理を作成できるクラウドサービス“Microsoft Flow”を正式公開した。
>“Microsoft Flow”は“○○したら××する”といった一連の手続き(ワークフロー)をビジュアルでデザインし、自動実行できるサービス
>料金は1ユーザー1カ月あたり750回までの実行であれば無料。有償プランであれば実行回数が増える
回数制限で有料とかゴミすぎ
752:デフォルトの名無しさん
16/11/02 09:32:20.20 5fVzD+K5.net
こんなのは華や茶の流派と同じで新しいのがでても統合などされることは無いんだよね
753:デフォルトの名無しさん
16/11/02 23:59:36.62 WEv5cQ3m.net
>>719-720
ワークフローなんか各社から出てるじゃん。
754:デフォルトの名無しさん
16/11/04 00:14:32.57 0ODaAY82.net
そういうのってネットに繋いでない時にも必要なのにクラウドサービスって
しかも有料って
755:デフォルトの名無しさん
16/11/04 01:47:32.80 DvwqGnEZ.net
完全にスタンドアロンで放置して動かすときにクラウドなんて使ってられない
756:デフォルトの名無しさん
16/11/10 06:45:58.93 +oUm9x6Y.net
TidyTabs Window Manager: give every program a tabbed user interface
URLリンク(www.nurgo-software.com)
757:デフォルトの名無しさん
16/11/11 12:54:54.72 ZYU/THNy.net
batファイルをつくりたいのですが、どのようにすればいいでしょうか
全くの初心者なのでヒントが欲しいです
目標としては、
親フォル�
758:_Aの中に、子フォルダ[aaa]あああ、[aaa]いいい、[bbb]ううう があります ①([aaa]あああ)の[ ]内の文字(つまりaaa)を自動で取得し、その名前の新規フォルダを作成。(つまりaaaという名前の新規フォルダ) ②その後、親フォルダA内の[aaa]が入っているフォルダを検索する ③ ②で検索された複数フォルダを①で作成されたフォルダに入れる という流れを自動で行いたいです
759:デフォルトの名無しさん
16/11/11 14:42:02.48 OyxHpcMK.net
>>726
親フォルダを引数で渡すとしての一例
@echo off
pushd %1
for %%i in ([*]*) do (
for /f "tokens=1* delims=[]" %%j in ("%%~i") do >nul 2>&1 (md "%%~j"&move /y "%%~i" "%%~j")
)
popd
760:デフォルトの名無しさん
16/11/11 15:12:14.98 p31+l1cx.net
>>727
最初のforは/dつけないとだめでは
761:デフォルトの名無しさん
16/11/11 15:56:59.78 OyxHpcMK.net
おおー、フォルダだったのか
てっきりファイルだと思い込んでたよ
762:デフォルトの名無しさん
16/11/13 18:37:37.78 cer+jHW2.net
質問させていただきます
初めてバッチファイル、コマンドプロンプトを勉強して作っているのですが、HTMLページから特定のURLを抜き出してバッチファイルに代入したいのですが、その場合はWSH等で抜き出さないと出来ませんでしょうか
763:デフォルトの名無しさん
16/11/13 20:15:27.03 YAp+h9P5.net
>>730
HTMLページって具体的に何?
764:デフォルトの名無しさん
16/11/13 20:16:08.95 vGjlz1Ep.net
そんな大雑把過ぎる質問では最適解など分かるはずもなくレスつかないよ
PowerShell使ったら?
765:デフォルトの名無しさん
16/11/13 20:19:41.15 cer+jHW2.net
>>731
OPENREC.tvという動画サイトです
ここから動画ファイルのURLを吸い出して、エンコソフトをコマンドプロンプトに直接代入したいと思いまして・・・
>>732
すみません、この手の事は不慣れで・・・
PowerShellというものを初めて知りましたので、調べてみます
766:デフォルトの名無しさん
16/11/13 23:00:08.77 BL+CTUiW.net
手段の前にまず手順を具体的に整理して見るといい
要件についてまったく何も知らない他人に
全部手作業でやってもらうよう依頼するとしたらどう説明する?
767:デフォルトの名無しさん
16/11/14 01:02:54.70 csZc9y3a.net
松岡修造みたいにすると思う。
768:デフォルトの名無しさん
16/11/14 13:10:56.92 vvHHVAL2.net
バッチなんて所詮手作業を自動化するだけ
ここでは手作業を自動化するのを支援することは出来るが
手作業で出来ないor内容がわかってない人はどうしようもない
769:デフォルトの名無しさん
16/11/14 14:36:44.38 O1UQmJEN.net
>>733
1.PowerShellで.NETFramework使う
2.PythonやRubyなんかのllを使う
3.C#で簡単プログラミング
さあ選べ
770:デフォルトの名無しさん
16/11/14 15:07:34.34 WHs7zj8I.net
この場合は、バッチファイルにて
htmlを取得して、url文字列を抜き出して、エンコソフトにオプション渡し
ができるのか?、という問いなので、さあ答えは
771:デフォルトの名無しさん
16/11/14 15:27:55.44 bnBDmUvf.net
>>733
そこのサイトは知らんけど
>動画ファイルのURLを吸い出して
なんて書いてるけど今時動画ファイル直リンなんてあるの?手段すら分かってないんじゃない?
この手の技術に明るくないのであれば既存ソフトを用いてUWSCやAHKで自動化が現実的だと思う
rtmpdumpみたいなcuiソフトがそのサイトで使えるならバッチで出来ると思うが
772:デフォルトの名無しさん
16/11/14 15:29:20.63 9SfC86lS.net
動画サイトって普通ストリームじゃないの?
URLからダウンロード、エンコって、まず手作業でどういう手順で行うのか説明してくれないと
wshやPowershellでだって出来るかどうかも答えられないよ
773:デフォルトの名無しさん
16/11/14 19:02:24.4
774:0 ID:GWnO6+Yj.net
775:デフォルトの名無しさん
16/11/14 19:40:40.70 kXxSR+Dw.net
>>741
人に聞くならまず正しい日本語で頼む
> 今までは動画ページからm3u8形式の格納されてるURLをソースから引っ張ってきて
君には動画ページとかソースが何者かがわかってるんだろうけど、他の人にはそれが何者なのか?どこから与えられるのか?とか全然わからない
776:デフォルトの名無しさん
16/11/14 20:28:41.10 8ZP1uHGR.net
>>741
その動画サイトとやらを教えられない理由があるなら
先に説明しておく方が親切だよ
777:デフォルトの名無しさん
16/11/14 20:35:09.15 GWnO6+Yj.net
>>733でも書いた通り、openrec.tvというサイトです
動画ページはどこを見ても同じソースだと思うので深く考えず、URLを載せなかっただけですがやはり載せた方がよろしいでしょうか?
divタグ内に変数で各情報が載っておりますが、そこは重要ではなく>>738が仰ってる通りです
778:デフォルトの名無しさん
16/11/14 20:51:56.98 sZZGpXNZ.net
>>741
普段使いのcURLというCUIなダウンローダーで試した、使いたいツールがあるならお好みでどぞ
URLリンク(curl.haxx.se)
URLリンク(bintray.com)
Win32 - GenericにあるSSL, SSH対応版ね
前提として、外部ツールの検索パスは設定済みとする
バッチファイルの引数としてURLをひとつ渡す。例: batchfile.bat URLリンク(www.openrec.tv)
ここから
@echo on
setlocal ENABLEEXTENSIONS
cd /D %~dp0
@rem 引数有無と引数名チェック
if "%~1"=="" goto ERROR
echo;%1|findstr /R /C:"^http" /C:"openrec" >NUL||(echo "%1" を処理できません) && goto ERROR
@rem URLのアドレスとHTMLを環境変数へ設定
set ADDR=%1
for %%I in (%1) do set HTML=%%~nxI
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
@rem HTMLから文字列抽出
for /F "tokens=2 delims=<>| " %%I in ('type %HTML%^|findstr /R /C:"<title>"') do set TITLE=%%~I
for /F "tokens=2 delims=, " %%I in ('type %HTML%^|find /I "m3u8"') do set TARGET=%%~I
echo ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
pause
exit
ここまで
779:デフォルトの名無しさん
16/11/14 20:56:46.40 sZZGpXNZ.net
すまそ、goto先がすっぽ抜けてた
中略
echo ffmpeg -c copy "%TITLE%.ts" -i "%TARGET%"
pause
exit
:ERROR
echo 引数が無効のため処理できませんでした
pause
exit
ここまで
780:デフォルトの名無しさん
16/11/14 21:08:57.72 nGSer73d.net
curlってすごく便利なコマンドがあったね
連番ファイルとか今までperlやbashでスクリプト書いてたのがアホらしい
781:デフォルトの名無しさん
16/11/14 21:15:57.14 sZZGpXNZ.net
>>745
追伸、安全対策としてcurl処理のすぐ下に条件分岐も追加しておいてほしい
@rem HTMLダウンロード
curl -L --max-redirs 10 -R -O %ADDR%
if not %ERRORLEVEL%==0
782:goto ERROR
783:デフォルトの名無しさん
16/11/14 21:28:24.00 GWnO6+Yj.net
おお、サンクスです・・・
が、一つわがままを言わせてもらうとやっぱり外部バイナリなりを使わないと出来ないですか・・・
どのPCでもすぐに使えるようにしておくと楽だなーと思ったのがきっかけだったので・・・
784:デフォルトの名無しさん
16/11/14 21:35:57.24 4gwDzXsT.net
そもそもffmpeg使う時点で外部バイナリ必須では?
それでも外部バイナリに頼らないでhttpダウンロードしたいっていうのなら
bitsadmin /transferって手がなくはないけど
785:デフォルトの名無しさん
16/11/14 21:37:40.26 sZZGpXNZ.net
>>749
bitsadmin.exe があるけど、拡張子がないサイトだと無理っぽかった、俺環かもだが
試してダメだったためcurlに書き換えた
786:デフォルトの名無しさん
16/11/14 21:38:23.41 GWnO6+Yj.net
なんというか、インストール不要であるのが理想的だなと・・・
それで、一時はWSHでjavascriptでHMTLをダウンロードしようかと考えていました
787:デフォルトの名無しさん
16/11/14 21:58:48.06 4gwDzXsT.net
>>751
それは知らなかった
そうすると後はPowerShellとか
powershell -C "$h = Invoke-WebRequest URLリンク(example.com;) $h.Content"
788:デフォルトの名無しさん
16/11/15 08:29:35.25 bLa91iv6.net
vbsでhttpすればいいんじゃね
789:デフォルトの名無しさん
16/11/16 04:24:03.14 tgJZOdTt.net
dir /ad /b /s "abc"
サブディレクトリ含め"abc"フォルダのパスを列挙したかったんだけど
子に"abc"がある時と無い時で挙動が全く変わる
子に"abc"が無ければ望み通りの結果になるけど
子に"abc"があるとそこで dir /ad /b /s されて全てのディレクトリが列挙される
"*abc"だと"zabc"も出て来るし
"*\abc"や"C:\TEST\*\abc"は構文error
if exist "abc" で例外処理しないとダメ?
何かサクッと出来る方法があるならお願いします
790:デフォルトの名無しさん
16/11/16 05:28:34.82 g04DIhTd.net
"\abc"
791:デフォルトの名無しさん
16/11/16 06:28:47.52 tgJZOdTt.net
>>756
それやると何故かカレントディレクトリは C:\TESTなのに (echo %cd% で確認)
ドライブ全体から検索してるのか C:\Users や C:\Program Files 配下の abcディレクトリまで表示されるんだけど Win10
792:デフォルトの名無しさん
16/11/16 09:56:14.36 l4m+U27H.net
こういうこと?
dir /ad /s /b | findstr /r \abc$
793:デフォルトの名無しさん
16/11/16 16:58:26.02 tgJZOdTt.net
>>758
dir /ad /b /s | findstr /r "\\abc$"
これで行けそうかな。ありがとう
/s スイッチの時フルパスで無ければ強制的にディレクトリ名orファイル名と見做してくれればいいのに
子にあると対象パスの省略形と見なし、無ければ検索するディレクトリ&ファイル名になるとか罠もいいところだわ
dir /ad /b /s "\abc"
これだとカレントディレクトリが無視されてドライブ全体?からabcフォルダが検索されるんだけど理由が分かる人が居たら教えて下さい
794:デフォルトの名無しさん
16/11/16 19:53:01.57 G/QgDslQ.net
>>759
for /r %%i in (.) do if "%%~nxi" == "abc" echo "%%~fi"
\abc みたいに先頭に \ があるとそれはルートを示すんだよ
DOS の頃から同じ仕様なんだけど
795:デフォルトの名無しさん
16/11/16 20:29:10.66 G/QgDslQ.net
>>760
ABC とか Abc とか abC とか有ったら /i を追加
for /r %%i in (.) do if /i "%%~nxi" == "abc" echo "%%~fi"
796:デフォルトの名無しさん
16/11/16 20:36:19.30 tgJZOdTt.net
dir /ad /b /s | findstr /r "\\%name%$"
てな場合nameの末尾にスペースが入ると意図した結果にならず
dir /ad /b /s | findstr /e "\%name%" で解決出来ました
>>759
for /r とif での方が間違いが無さそうですね。ありがとう
"\abc" は、まず dir /ad /b /s "C:\abc" とドライブ省略形の対象ディレクトリと見做して
対象が無ければ検索するディレクトリ名&ファイル名として扱われている感じなのかな
797:デフォルトの名無しさん
16/11/16 22:35:57.05 fww2Eit8.net
いままでdir /sのディレクトリ指定は開始位置を指定するもんだとばかり思ってたけど違うんだな
指定ディレクトリが存在してたらこの通りで他のディレクトリの下は対象外なんだが
存在しないと他のディレクトリの下へ探しにいくんだな
気をつけないといけないな
実行速度は遅いだろうが
forfiles -s -mabc -c"cmd /c if @ISDIR==TRUE echo @PATH\@FILE"
798:デフォルトの名無しさん
16/11/17 01:33:10.64 45hMt1B7.net
>>759
dir .\abc /ad /b /s
カレント配下ならドット付けとくんじゃないの
799:デフォルトの名無しさん
16/11/17 01:41:34.94 3AVvQ2An.net
DOS/Windowsでは、単にabcとするのが普通で.\abcとは書かないかな
800:デフォルトの名無しさん
16/11/18 00:23:10.73 MVrqW6/3.net
さらに複数パターンの一致を検出してみる
for /r /d %%i in ("abc.*" "xyz.*") do if "%%~xi"=="" echo "%%~fi"
801:デフォルトの名無しさん
16/11/18 05:45:03.27 aprTvklx.net
>>765
は?
802:デフォルトの名無しさん
16/11/18 07:12:41.73 MVrqW6/3.net
フォルダに拡張子が無いとしたら
dir /ad /b /s abc.*
で良さそう
803:デフォルトの名無しさん
16/11/18 15:43:00.69 MssNdFsD.net
>>766
>>768
"abc.*"だと"abc."が最低条件になって"abc"は除外されるものだと思ってたけど"abc"も出てくるね
実際は末尾"."のフォルダは作れないから拡張子の付いているフォルダしか出ないと思ってた
なんで???"."て特殊なの?ちょっと目からウロコ
804:デフォルトの名無しさん
16/11/18 16:29:03.81 TqE/rt71.net
もともとドットは拡張子の区切り記号だったわけで
abc. = abc
Windowsになって複数のドットも付けられるようになったが
ドット2つ使うとファイル管理領域も2倍使う結果に
805:デフォルトの名無しさん
16/11/18 16:44:12.24 MssNdFsD.net
拡張子の区切り記号なのは分かるけどそれが
abc.==abc
となる理由が分からない
ドットが区切り記号だからファイル名(文字列)と見做さず比較の際に無視されるとかなのかな?
806:デフォルトの名無しさん
16/11/18 16:52:38.55 TqE/rt71.net
ファイル管理領域は、ファイル名部分と拡張子部分とに分かれており
ドットはその管理領域のどこにも書き込まれない
単に区分けする識別子の役割りしか持たない
つまり、管理上は、ファイル名=abc,拡張子=NULLってなってる
だからabc.とabcの見分けは付かない
エクスプローラでファイルをabc.で作成したってabcファイルが作られるだけ
807:デフォルトの名無しさん
16/11/18 17:06:48.25 TqE/rt71.net
なんか勘違いしてた気がする
LFNではドットもそのまま入ってる
808:デフォルトの名無しさん
16/11/18 17:12:57.12 MssNdFsD.net
>>772
>ドットはその管理領域のどこにも書き込まれない
>管理上は、ファイル名=abc,拡張子=NULL
>だからabc.とabcの見分けは付かない
詳しい説明をありがとうございます
納得出来ました。もうなんと言って良いのやら
ひとつ理解が深まりました。ドラクエのレベルアップの音が鳴り響いた気分です
809:デフォルトの名無しさん
16/11/18 17:24:08.15 MssNdFsD.net
コマンド側が古い仕様を引き摺ってると判断しておきます
810:デフォルトの名無しさん
16/11/18 18:07:23.95 TqE/rt71.net
おそらくコマンドやエクスプローラは、最後のドットに特別な意味(拡張子)を持たせて
ドットだけなら削除する仕様なんだろう
811:デフォルトの名無しさん
16/11/18 21:00:10.73 TqE/rt71.net
ピリオドと半角空白には色々と罠があるかも
md aaa
cd "aaa....."
md "abc. . . " (エクスプローラでのフォルダ・ファイル作成も同じ)
dir "abc.."
dir "abc..."(abc..とは異なる結果に)
812:デフォルトの名無しさん
16/11/19 03:25:52.98 JjiTnU56.net
#!/bin/bash
# すれ違いですまないが
apt-get moo #に見えてきた
echo "Enter to Exit"
read wait
813:デフォルトの名無しさん
16/11/19 04:02:30.76 6BFx2XsN.net
すれ違い杉
814:デフォルトの名無しさん
16/11/19 10:40:41.73 I/7/X0k0.net
ケイン
815:・コスギ 英才・出木杉 ・・・・板違い
816:デフォルトの名無しさん
16/11/19 11:47:06.46 HaGDkE41.net
>>772-773
合ってるよ
短い名前(いわゆる 8.3形式)ではカレントディレクトリの "." と ".." を除いて "." は記録されない
URLリンク(ja.m.wikipedia.org)
LFN ではそのまま Unicode で記録される
817:デフォルトの名無しさん
16/11/20 01:32:41.69 5hQ1kNDg.net
%random% って代入すると機能を失って、クリアするとまた復活するのね。
一時変数の名前に使うとちょっと便利かも
818:デフォルトの名無しさん
16/11/20 08:06:59.15 plO26YRe.net
777
819:デフォルトの名無しさん
16/11/20 22:07:31.97 mYrLDeuJ.net
>>782
バグの元だろ
820:デフォルトの名無しさん
16/11/21 02:59:43.79 bNk8tUAy.net
%errorlevel%とか%date%に代入するとかもやりそうな気配
821:デフォルトの名無しさん
16/11/21 18:40:20.55 1UsqdqxT.net
win10が時期アプデでコマンドラインシェルをデフォルトから格下げだってさ。えらいこっちゃ
fossBytesに11月19日(米国時間)に掲載された記事「Microsoft Replaces Command Prompt
With PowerShell As Windows 10 Default Shell」が、Windows 10のデフォルトシェルが
コマンドプロンプトからPowerShellに変更されると伝えた。Windows 10 Insider Build 14971で
すでに入れ替えが実施されたと説明がある。
Windows 10 Insider Build 14971では、これ以外にもMicrosoft EdgeでEPUB電子ブックを読む
機能や新しいPaint 3Dアプリケーションの導入などが実施されている。
(後略)
URLリンク(news.mynavi.jp)
822:デフォルトの名無しさん
16/11/21 19:58:33.06 4eyhD8wV.net
>>786
まあそろそろいいかなって思うわ
慣れれば PowerShell めっちゃ便利やし
823:デフォルトの名無しさん
16/11/22 16:32:55.50 OivDuOyC.net
>>785
おもしろい、どうなるのだろう
824:デフォルトの名無しさん
16/11/23 04:53:34.68 lMEr/SWa.net
%参照は上書きの値、if errorlevel文には set errorlevelしても無効
set errorlevel=5 などバッチ内で errorlevelを自分で設定する場合は if errorlevel文は使えない
if %errorlevel% GEQ 1 などであれば可
825:デフォルトの名無しさん
16/11/23 09:54:12.77 pZmHnyz7.net
WindowsPEも起動したらPowershellで始まるの?
最新のヤツでもマトモに動かせないのに
826:デフォルトの名無しさん
16/11/24 00:02:10.88 b21vlpof.net
>>727>>728
ありがとうございます
返信遅くなりました
ただ、せっかくヒントを頂いたのですが、想像より自身のレベルに見合わないスクリプトでした。実際につくるのは先になりそうです……
827:デフォルトの名無しさん
16/11/24 00:50:33.49 aisAFXaT.net
>>791
>>727-728 はヒントじゃなくて720の要件の全部だぞ
721をbatで保存してそのbatに親フォルダAをドロップすれば720の通りになる
828:デフォルトの名無しさん
16/11/26 00:47:02.26 61EwoExF.net
>>727>>728>>792
ありがとうございます!できました
>>728の方が言っていた直しが正しく行えなかっただけでした
皆さん本当にありがとうございます
自分で書けるようにもなりたいのですが、皆さんどのようにバッチファイルを学んだのでしょうか
サイトなどを回ってもなかなか進まなくて……
829:デフォルトの名無しさん
16/11/26 02:10:39.28 CoCq2KiG.net
for /?
set /?
この二つ読んでわからないところをぐぐる
830:デフォルトの名無しさん
16/11/26 04:48:01.93 0eLSGHGV.net
「バッチ �
831:�門」でググって出て来るページを読む コマンド一覧を載せてるサイトを見てどんなコマンドがあるのか一通り目を通す(暗記までする必要なし) /?でヘルプ見ながら書いて一つ一つ試す pauseを挟みつつ期待した通りに動いてるか確認しながら書いていく 分からなければここで質問 自分の場合、リダイレクトとかエスケープとかcall set で遅延環境変数を使わない方法とかはここで教わった 何をやっているのか分からないものは必ず解読するようにすれば覚えていける 動作を理解していないとテストでは問題無く動いても本番でエラーになる事もあるからファイル操作させたりする場合は予めバックアップを取る 処理対象が大量にある場合などは1度に全てを処理せず何度かに分ける 721で難しそうなのはforのみ 最初のforで対象フォルダ("[*]*"にマッチするもの)を抽出してる for /d %%i in ([*]*) do echo %%i と分解してみれば分かりやすい for /f "tokens=1* delims=[]" %%j in ("%%~i") do delims=[] は "[" "]" の文字を区切り文字に指定 tokens=1* は1つ目のトークンを%%jに残りを%%kに "[aaa]あああ"であれば %%jに"aaa"が %%kに"あああ"が入る md "%%~j"&move /y "%%~i" "%%~j" フォルダ作成&移動 "[]あああ"なんてのがあると想定していない"あああ"フォルダに移動になるから注意ね
832:デフォルトの名無しさん
16/11/27 09:52:07.02 mLcTWF4w.net
おはようございます。
同一フォルダ内にある複数ファイル
a.jpg、あ.jpg、1.jpg等を一括で001-a.jpg、002-あ.jpg、003-1.jpgに連番を付加する
batファイルを教えて下さい!
833:デフォルトの名無しさん
16/11/27 11:17:31.27 2v7FHJZn.net
a,あ,1の順序付けにどういう規則をつけるの?
普通の昇順降順ではこの順番にならないけど
834:デフォルトの名無しさん
16/11/27 11:19:13.96 mLcTWF4w.net
紛らわしくてすいません。
普通の昇降順でお願いします。
835:デフォルトの名無しさん
16/11/27 11:33:53.80 2v7FHJZn.net
こういうのって結構難しいんだよね
例えば、
a.jpgと001-a.jpgの二つのファイルがあったら
先に001-a.jpgをリネームして001-001-a.jpgにしないと
ファイル名が重複してリネームできなくなるし
(さらに001-001-001-a.jpgがあったりすると...)
836:デフォルトの名無しさん
16/11/27 11:57:08.03 mLcTWF4w.net
単純に今あるファイル名の先頭に001や002と連番をつけるだけで大丈夫です。
この前作ったのですが誤ってファイルを消してしまって(泣
837:デフォルトの名無しさん
16/11/27 12:22:44.82 2v7FHJZn.net
>>800
正常系だけでいいのなら
@echo off
pushd %1
set n=0
for /f "delims=" %%i in ('dir /b /on *.jpg') do (
set /a n+=1
call set nn=00%%n%%
call set nn=%%nn:~-3%%
call ren "%%~i" %%nn%%-"%%~i"
)
popd
838:デフォルトの名無しさん
16/11/27 12:47:37.07 3PyehhaB.net
作成代行スレじゃないので自力でここまではできたけどここから先がわからない
というような努力の跡がほしいなぁ
839:デフォルトの名無しさん
16/11/27 15:20:44.02 V1m99hal.net
@echo off
pushd "%~dp1"
set n=1001
:ARGCHK
if "%~1"=="" pause &exit /b
ren "%~1" "%n:~-3%-%~nx1"
echo.
echo "%~nx1"
echo "%n:~-3%-%~nx1"
set /a n+=1
shift &goto :ARGCHK
選択ファイルを送るやバッチにD&D。001から999まで
Winの仕様によりD&Dの際は先頭ファイルを掴まないと順番が狂うので注意
840:デフォルトの名無しさん
16/12/04 12:46:34.73 RTx2BH8+.net
>>794>>799
ありがとうございます!返信遅くなりました
とくに799の方、具体的に話していただいて本当に助かりました。
841:デフォルトの名無しさん
16/12/04 16:10:49.30 J7/x1rKh.net
799
842:デフォルトの名無しさん
16/12/04 19:03:21.48 rwQpbrj5.net
799は素晴らしいな
843:デフォルトの名無しさん
16/12/10 00:17:50.34 CO5JTr10.net
pushd "%~dp1" || exit /b
if not exist "title.txt" exit /b
for /f "usebackq delims=" %%a in ("title.txt") do (
ren "%~1" "%%~a%~x1"
shift
)
forの中でshiftが働きません
どう書けば良いでしょうか?
選択ファイルをドラッグ&ドロップしてtitle.txtの順通りにリネームしたいです
844:801
16/12/10 14:16:28.41 CO5JTr10.net
自己解決しました
@echo off
pushd "%~dp1" || exit /b
if not exist "title.txt" exit /b
:LOOP
if "%~1"=="" pause &exit /b
for /f "usebackq %SKIP%%N% delims=" %%a in ("title.txt") do (
ren "%~1" "%%~a%~x1" || (echo "%~1" "%%~a%~x1"&pause &exit /b)
goto :NEXT
)
:NEXT
if not defined SKIP set SKIP=skip=
set /a N+=1
shift &goto :LOOP
845:デフォルトの名無しさん
16/12/10 15:09:17.17 ga5ibtHW.net
forループは実行前に式展開されてから実行されるので
式展開時に変数が内容の文字列に置き換わってしまい変数の意味を失う
@echo offを取って表示させたらわかるだろう
面倒なのでヒントだけ
for %%a ~ do (
set b=%%a
call echo %%a - "%%~1" - %%b%%
shift
)
846:デフォルトの名無しさん
16/12/10 16:20:43.39 CO5JTr10.net
>>809
ありがとうございます
callで遅延展開風にする場合%で囲むと思っていたので
call ren "%%~1%" "%%~a%%~x1%" と書いていて出来ませんでした
call ren "%%~1" "%%~a%%~x1" と書けば良かったのですね
%で囲むではなく「%を重ねる」と覚えるようにします
847:デフォルトの名無しさん
16/12/10 16:27:31.21 ga5ibtHW.net
式評価されるということは、
%%→%になるっていうことなんだよ
(これは%を表記する方法として覚えるけど)
set a=echo hoge
call %%a%%
call call %%%%a%%%%
848:デフォルトの名無しさん
16/12/11 10:51:05.79 HwfbXu/f.net
>>810
引数や変数を遅延展開するのは無理あるよ
あらかじめ環境変数をセットしたものが対象であり、どのコマンドにも適用できるわけじゃない
パーセントを前方に重ねるのはバッチ上の書式、一重囲みが環境変数、call command 二重囲みが遅延展開というように意味が異なる
よくわからなければエクスクラメーション記号にするか、カッコを使った複文を避けてサブルーチンに渡す、など別の方法をとる
849:デフォルトの名無しさん
16/12/11 15:29:30.80 wBKcLq5q.net
遅延展開というより
式評価が、実行時とcallの2回実施される
一回目の式評価ではまだ変数展開が行われずに残ったままにしたい
ってのが%%にする理由
850:デフォルトの名無しさん
16/12/11 15:39:49.38 wBKcLq5q.net
for /F %%i in ('command')
形式の'command'の部分、ここにも式評価が入ることが結構忘れられる
851:デフォルトの名無しさん
16/12/11 16:35:43.66 wBKcLq5q.net
補足
commandにパイプやリダイレクト記号を書くような場合は
^| や ^>とかのように'^'を付けないとエラーになるから忘れるということは無いだろうが
忘れる場合ってのは、>>523や>>538のような場合のことで
元のように%一つにしておくと何が起き得るかは"ab%cd%ef"とかが入ってる場合を考えれば解かる
852:デフォルトの名無しさん
16/12/11 22:14:02.08 iHWHaBgd.net
\/:*?"<>|
テキストファイルに含まれるこれらのファイル名に使えない文字を全角文字に置換したいのですが
バッチで試してみたところ"*は無理でした
バッチから使えるcuiソフトなどで良いものや何か方法があれば教えて下さい
あ/あ "abc"
など括弧のように対応する"がある場合は、あ/あ “abc”
あ/あ a"
など対応するものが無ければ、あ/あ a”
みたいに出来れば理想です
853:デフォルトの名無しさん
16/12/11 22:19:57.19 iHWHaBgd.net
あ/あ “abc”
が何か分かり難くなってますが
左側が左ダブル引用符という下から上へコロン打ってるやつで
右側が右ダブル引用符で上から下へのコロンです
854:デフォルトの名無しさん
16/12/14 00:05:22.68 vS/jNHEE.net
netstat みたいに気軽で、もっと高速にアクセス中のホストが分かる方法ないでしょうか?
というのは、EdgeのURLを取得するのはかなり面倒なので
でも netstat の情報は1分以上遅延するので、できれば数秒で知りたい
855:デフォルトの名無しさん
16/12/14 00:51:13.45 /GnWlzD4.net
>>818
netstatそんなに遅れるか?
名前解決に時間が掛かってるんなら-nを付けて数値のみで表示させてみては?
856:デフォルトの名無しさん
16/12/14 01:19:09.19 vS/jNHEE.net
>>819
なるほど、-nなら一瞬でしたw
名前で反応したかったので、-fにしてました
857:デフォルトの名無しさん
16/12/14 01:31:44.57 /GnWlzD4.net
セッション数幾つぐらいなのか知らないけど
普通名前解決に秒単位なんてかからないよ
自分のプロバイダのところのDNSサーバー使ってるか?
858:デフォルトの名無しさん
16/12/14 01:54:27.20 vS/jNHEE.net
>>821
特に何もしてないので、プロバイダのDNSだと思います
普段は4つですが、ブラウザ開くと1ページでも何十個も出てきますね
よく見ると、一瞬で何十個もリストアップされる場面と、ひっかかる場面があって、相手先によるようですね
859:デフォルトの名無しさん
16/12/14 03:29:46.39 PdV20HuV.net
>>816-817
ファイル名には、半角英数字と、_ アンダーバーだけを使うこと
バグるアプリがあるから、それら以外の文字は使うな
860:デフォルトの名無しさん
16/12/14 04:28:14.68 /GnWlzD4.net
まあ今時ファイル名に日本語を使うなってのはちょっと無理っぽいだろ
良いものがあるかどうかは俺は知らんよ(人に探させずに自分で探すのがいいだろう)
PowerShellやWSHでやる分にはそれくらいは出来るだろうけど
ファイル名にはいろいろ落とし穴があるからなあ
長さ制限とか、con,com1等のデバイス名とか後につくピリオドや半角空白とか
com1. ..txt
とか作れない
861:デフォルトの名無しさん
16/12/14 17:45:01.83 vFnJFYnV.net
コマンドラインから「システムの環境変数」を参照するのってできる?
具体的には最近のJavaインストールすると、
システムの環境変数PATHの先頭に余計なもの追加しやがるので
それを削除するスクリプト書きたいんだよね。
設定は setx 使えばいいらしいんで、参照さえできれば削除できるかなーと。
862:デフォルトの名無しさん
16/12/14 17:55:14.06 puNU7ctc.net
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
個人的には reg export 使ってファイルでごにょるのが好み
863:デフォルトの名無しさん
16/12/14 21:30:56.66 PdV20HuV.net
PowerShell_ise では、大文字・小文字は同一として扱われる。
環境変数PATHを表示する
$Env:Path
設定は、
$str = ";C:\Program Files\Internet Explorer\"
set-item -path env:path -value "$Env:Path + $str" -WhatIf
-WhatIf を付けているので、実際には実行されないで、結果を見れる
864:デフォルトの名無しさん
16/12/14 23:47:39.26 vFnJFYnV.net
>>826
さんくす
865:デフォルトの名無しさん
16/12/15 22:24:24.35 Jry/Bq76.net
このスレってやっぱり仕事でCMD使ってる人がほとんどなのかな?
866:デフォルトの名無しさん
16/12/15 23:46:26.73 Jj9qQdSY.net
余裕で趣味です
867:デフォルトの名無しさん
16/12/16 00:25:58.77 EPzN1wXR.net
今もバッチで色々やってるけど
そろそろPowershell覚えた方がいいんかナー
868:デフォルトの名無しさん
16/12/16 03:59:28.83 rja7Rz9P.net
かなり前からそう思ってるけど.Net覚えるのが面倒臭くて先延ばしにしたままだわ
869:デフォルトの名無しさん
16/12/16 19:20:13.39 UvIhWraO.net
少し前から cmd/wsh+vbs から PowerShell に
870:移行したけどチョー楽しい ただ各所にトリッキーなトラップがあるのと比較演算子が -eq とか -lt とかなのがいまだに慣れない
871:デフォルトの名無しさん
16/12/17 20:01:48.32 rAxcOYFz.net
キッティングで使ってるけど
PowerShellはストアアプリの駆除がメインだな
872:デフォルトの名無しさん
16/12/18 08:18:40.79 qKtu6SDf.net
シェルスクリプトはリダイレクトに > | < 使ったアホのせいで
比較演算子がまともに使えなくなったのが痛い
PowerShellではその悪習を断ち切って欲しかった
873:デフォルトの名無しさん
16/12/18 11:49:41.76 djwC/Ohb.net
リダイレクトに<>を使ったのは大成功だったと思うがな。
PowerShellでヘンテコな構文を導入したところで、
マイクソシネって言われるだけじゃん。
悪臭というなら、パス区切り文字の\だろ。
874:デフォルトの名無しさん
16/12/18 15:58:05.60 oHmdKz4q.net
[]も問題起こすよね
875:デフォルトの名無しさん
16/12/18 16:00:06.55 oHmdKz4q.net
なんか四角形に見えるw
『 [ 』と『 ] 』ね。
876:デフォルトの名無しさん
16/12/19 12:20:52.68 H16UOEk6.net
豆腐屋って減ったよなあ
877:デフォルトの名無しさん
16/12/19 21:24:30.96 j5IwDTpi.net
峠を攻める豆腐屋
878:デフォルトの名無しさん
16/12/19 22:09:00.93 EFgj4hJx.net
というよりも小売りが…
八百屋なんて、そういうのがネタになっている商店街か、
近くに田畑があるようなところでしか見なくなったよ。
ほとんど全ての街ではスーパーでいいからな。
そう考えると、花屋は頑張っている。
未だにそれなりの数が残っているよな。
ま、スーパーの置き場所は限られているからか。
あとは客ひとりの利益率も悪くないんだろうなあ。
879:デフォルトの名無しさん
16/12/23 13:16:48.65 C13rqdFY.net
自身にマウントされてるドライブ/フォルダ名を指定してその対象がローカルドライブか否か判別できるコマンドってありますか?
880:デフォルトの名無しさん
16/12/23 13:19:26.61 C13rqdFY.net
あれ、なんか投稿が切れてる・・・
自身にマウントされてるドライブ/フォルダ名を指定してその対象がローカルドライブか否か判別できるコマンドってありますか?
『net use ドライブレター』でCIFS/WebDAVでマウントされた物かそうでないかは判断できるけど、
Dokanとかでマウントされた物も含めて、ネットワークドライブ全般を判別したいです。
(ただiSCSI/FCとかのブロックデバイスは仕方ないかなと思ってます)
よろしくお願いします。
881:デフォルトの名無しさん
16/12/23 20:54:24.61 QxIckOqH.net
>>843
俺は以下の要領でVBScriptと併用してる
スレリンク(tech板:587番)
>593 : デフォルトの名無しさん[sage] 投稿日:2014/06/16(月) 18:45:29.61 ID:R0cE173n [1/1回]
>>>592
> WScript.Echo CStr(CreateObject("Scripting.FileSystemObject").GetDrive(WScript.Arguments(0)).DriveType)
> ↑
>この1行をVBScriptファイルとして保存してから別途呼び出す方式にすれば、大雑把な判定なら可能。
>例えば、そのVBScriptファイルを"test.vbs"としてDドライブの種別を調べたい場合、
>コマンドプロンプト画面またはバッチファイルで以下のように実行してみる。
>cscript test.vbs d:
>すると1桁の数字が表示される。数字の意味は以下の通り。
> 1:リムーバブルドライブ(USBメモリ/SDカード/FDなど)
> 2:HDD
> 3:ネットワークドライブ
> 4:CD-ROM/CD-R/DVD-ROM/DVD-Rなど
> 5:RAMディスク
882:837
16/12/23 22:21:21.24 l7ZH
883:1QCK.net
884:デフォルトの名無しさん
16/12/23 23:59:30.85 QxIckOqH.net
>>845
あとは URLリンク(technet.microsoft.com) あたりで、他に使えそうな構文がないかどうか探すしかないのでは?
ちなみに以下の1行をVBScriptファイルとして保存してから別途呼び出す方式にすれば、任意のドライブにメディアが挿入されているかどうかを判定可能。
↓
WScript.Echo CStr(CreateObject("Scripting.FileSystemObject").GetDrive(WScript.Arguments(0)).IsReady)
885:837
16/12/24 08:36:33.47 bGXjBeNc.net
>>846
ありがとうございます。
こちらのツールも勝手がよさそうですね。使わせていただきます。
886:デフォルトの名無しさん
16/12/24 12:05:37.82 mYH1sKhw.net
WSH等を使う…と言ってたらバッチの出番が無くなったりしてな
887:デフォルトの名無しさん
16/12/27 22:52:31.05 tD8K2H9A.net
errorleveになぜか9009が急に出はじめて
びっくりして検索したら、いろいろ出た
888:デフォルトの名無しさん
17/01/02 07:34:29.54 Jfm6LKzZ.net
msys等のprintf をプロンプトから forループ、変数 %s で実行すると困る、って夢を見たんだ
@for /d %s in ("%ProgramFiles%\M*") do @printf """%"s""" %"s"\n" "%s" "%s"
(´-`).。oO(ワケワカラン… もう一回寝たら何かひらめくかな…)
889:デフォルトの名無しさん
17/01/07 01:17:44.86 mJLtkeqF.net
URLリンク(pastebin.com)
こんな感じでmp4からpng形式で切り抜きたいのですが、出来ません
お願いします
890:デフォルトの名無しさん
17/01/07 01:42:13.02 QYFKEjsV.net
>>851
FILENAMEを%で囲ってないからでは
891:通りすがり
17/01/07 09:57:36.05 YuFs6plI.net
FILENAMEを、%で囲めば、いいのか。
φ(..)メモメモ。
892:デフォルトの名無しさん
17/01/08 00:48:03.49 jXHP++jg.net
>>852
ありがとうございます
FILENAME=hoge hage
としたい場合はどの様にしたらいいんですかね?
どこをダブルクォーテーションで囲めばいいのか分からなくて
893:デフォルトの名無しさん
17/01/08 01:06:14.31 xvjZF4HS.net
set文は引用符要らないでしょ、右辺丸々空白ごと代入される(引用符で括れば引用符ごと)
使用する状況によって "%var%" とかすれば
894:デフォルトの名無しさん
17/01/09 12:41:03.48 XllxQEeD.net
set文の最後の改行前や=の前後に空白入れてしまってバグになるなんて
初心者にはありがちか…な?
895:デフォルトの名無しさん
17/01/09 17:39:58.40 FdW16b/b.net
>>856
うん
896:デフォルトの名無しさん
17/01/09 17:46:32.39 Vl0ZF+DQ.net
>>856
こんな感じのが動かなくてなんでじゃーってなってた
@echo off
set number=1 && echo hoge
if "%number%"=="1" echo 成功
pause
897:デフォルトの名無しさん
17/01/21 18:44:36.79 tXmcovE0.net
スペース有り無しはホント罠
ファイルに出力リダイレクトする時も末尾に謎スペースが入ってるーとかよくある
vbsって別ファイルじゃなくてバッチ上に書いた文で実行できなかったっけ
898:デフォルトの名無しさん
17/01/21 18:57:14.10 0ZiC2kwV.net
jscriptなら
899:デフォルトの名無しさん
17/01/23 20:40:05.68 D7Cv/vEJ.net
バッチ処理で複数の作業を同時にするのはどうやるんでしょうか?
hoge 1-
900:100まで一気にやってしまうと負荷がひどいので、3つずつ走らせたいです FOR /F %%I IN (z,txt) do ( start /b hoge %%I ) これではすべて同時に実行されて困ってます
901:デフォルトの名無しさん
17/01/23 20:47:18.46 KnzUZKpX.net
>>861
取りあえず3つ起動して、それが終了するのを監視するとかかな
tasklist /fi "IMAGENAME eq hoge"
が無くなるまで次の起動を待つ
902:デフォルトの名無しさん
17/01/23 21:25:20.02 ltIH4vtA.net
同じ事で悩んだ記憶がある、こんなん如何でしょ?
FOR /F %%I IN (z,txt) do (
start /b hoge %%I
call :hogecounter
)
goto :EOF
:hogecounter
set /a num_hoge = 0
for /f "usebackq" %%i in (`tasklist /FI "IMAGENAME eq hoge.exe"`) do set /a num_hoge += 1
if %num_hoge% GEQ 5 (
echo hoge.exe 3つ以上実行中なので待機中... ---- %date% %time% ----
ping -n 2 127.0.0.1 1>nul 2>&1
goto hogecounter
)
exit/b
903:デフォルトの名無しさん
17/01/24 12:56:00.44 wPNJq+TP.net
>>862-863
回答ありがとうございます。とても勉強になりました
tasklistを使ってどうやって監視するのか考えていたんですが、こうやるんですね
904:デフォルトの名無しさん
17/01/24 20:29:53.92 /B8f83m4.net
startコマンドの第一引数はウィンドウタイトルと認識されるから、/b の効果は不明だね
start
905:デフォルトの名無しさん
17/01/24 20:30:49.14 /B8f83m4.net
start "" /b hoge %%I みたいに空文字でも入れておくといいかも
906:デフォルトの名無しさん
17/01/24 23:59:56.75 VxYK/9Zb.net
処理の終了を知らせるために
rundll32 user32.dll,MessageBeep
としてるんですが、鳴る音がランダムです
音楽プレイヤーを起動することなく特定の音を鳴らしたい場合はどう書けばいいですか?
907:デフォルトの名無しさん
17/01/25 08:04:52.52 JylBc2Qw.net
>>867
もし俺なら以下のようにする。
echo ^G^G^G
「^G」は実際にはコマンドプロンプト画面上で[Ctrl]と[G]を同時に押す事で入力できるアスキーコード7
(元々BEEP音を鳴らすための制御コード)を指す。だから「^G^G^G」なら、BEEP音が「ピッピッピッ」と3回鳴る。
パソコンによっては、ヘッドホンを繋ぐとBEEP音がヘッドホンからしか聴こえない機種もあるので注意。
(昔のパソコンは、ヘッドホンを繋いでいてもBEEP音は本体スピーカーから聴こえる機種のほうが普通だったけど)
908:デフォルトの名無しさん
17/01/26 02:22:00.01 xZjzKm01.net
プログラムは起動させても自動的に終了するのなら大丈夫では?
start "" /b /min sndrec32 /play /close "hoge.wav"
909:デフォルトの名無しさん
17/01/26 03:29:49.24 xZjzKm01.net
他スクリプトと併用した例
■start /minの代わりにWSHを併用(タスクバーにタブが出ない)
@if(0)==(0) @echo off
::ここから@endの間にBATスクリプトを記述し、最後はgoto :eofで終わらせる
echo 初回
cscript.exe //nologo //e:jscript "%~f0" "c:\media\foo.wav"
echo 2回目
cscript.exe //nologo //e:jscript "%~f0" "c:\media\bar.wav"
goto :EOF
@end
(new ActiveXObject("WScript.Shell")).Run('sndrec32 /play /close "'+WScript.Arguments(0)+'"',0,true);
■powershellを使ってBEEPで音階を演奏する
@echo off
:: beep(周波数,再生時間)
powershell -C "(262,294,330) | % {[Console]::beep($_,200)}"
910:デフォルトの名無しさん
17/01/26 03:42:07.64 xZjzKm01.net
訂正
powershell -C "(262,294,330) | %% {[Console]::beep($_,200)}"
911:デフォルトの名無しさん
17/01/27 00:
912:39:40.64 ID:igA7csKz.net
913:デフォルトの名無しさん
17/01/27 00:47:40.39 pF7zedh0.net
初心者です
batの書き方wikiのようなものはないんでしょうか
代表的なサンプルコードがたくさんあるサイトとか
みんな何を参考にコード書いてるの?
cmd help以外で
914:デフォルトの名無しさん
17/01/27 00:52:08.69 7NHk2TgN.net
バッチ 入門
バッチ 使い方
バッチ リファレンス
915:862
17/01/27 10:21:22.88 01h1aWf4.net
>>872
その方法をバッチファイルで実現するには、恐らく以下の方法が一番簡単だと思う。
(1) 黒いコマンドプロンプト画面で「echo echo 」の10文字(半角スペースを含む)をキーボードから打ち込む。
※この段階ではEnterキーをまだ押さない事!
↓
(2) キーボード上の「Ctrl」キーと「G」を好きな回数だけ同時に押す。
※例えばバッチファイルの実行によりBEEP音を2回鳴らしたい場合は2回やる。
↓
(3) そのまま「>>"」をキーボードから打ち込む。
↓
(4) 編集したいバッチファイル名をエクスプローラの画面からコマンドプロンプト画面にドラッグ&ドロップする。
※例えば"C:\temp\sample1.bat"をエクスプローラの画面からドラッグ&ドロップすると、コマンドプロンプト画面に「C:\temp\sample1.bat」の文字列が転記される。
↓
(5) そのまま「"」をキーボードから打ち込む。
※ファイル名を「"」(ダブルクォーテーション)で囲む理由は、ファイル名やフォルダ名に空白が含まれていても問題なく作業できるため。
↓
(6) ここまでの一連の操作により、コマンドプロンプト画面では以下のように見えるはず。
「echo echo ^G^G>>"C:\temp\sample1.bat"」
それを目視確認できたらEnterキーを押す。これで作業完了。
↓
(7) あとはメモ帳などのテキストエディタでバッチファイル編集を続行すれば良い。
916:デフォルトの名無しさん
17/01/27 16:42:05.37 o8MkOvQJ.net
>>873
おそらく、バッチの情報を1から100まで網羅してるページはネット上には無い。
ここの人たちは現役で使ってた人ばかりだから、習うより慣れろで成長してきた人
今から知りたければ、DOSが現役だった頃の20年~30年前の参考書を読むといいよ
図書館に行けばいくらでもある。古い本でも内容は全く問題ない。
おもにPC-9801やJ-3100関連だが、コマンドの使い方や自由度については昔も今も変わってない。
会社で98のDOSを使わざるを得ないサラリーマン向けの初心者用書籍が、わかりやすい。
dateコマンドはフォーマットが若干変わったし、formatコマンドとかハードウェア制御系は
オプションが全然違うけど、書き方は同じ。そういう差異だけはネットで調べるとよい。