1 名前:デフォルトの名無しさん [2012/04/21(土) 22:37:58.49 ] 拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる 質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。 ※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。 前スレ 【.cmd】 バッチファイルスクリプト %8 【.bat】 toro.2ch.net/test/read.cgi/tech/1315844420/ 【.cmd】 バッチファイルスクリプト %7 【.bat】 hibari.2ch.net/test/read.cgi/tech/1298873550/ 【.cmd】 バッチファイルスクリプト %6 【.bat】 hibari.2ch.net/test/read.cgi/tech/1277465356/ 【.cmd】 バッチファイルスクリプト %5 【.bat】 pc12.2ch.net/test/read.cgi/tech/1242268171/ 【.cmd】 バッチファイルスクリプト %4 【.bat】 pc12.2ch.net/test/read.cgi/tech/1229955189/ 【.cmd】 バッチファイルスクリプト %3 【.bat】 pc11.2ch.net/test/read.cgi/tech/1217860043/ 【.cmd】 バッチファイルスクリプト %2 【.bat】 pc12.2ch.net/test/read.cgi/tech/1197881068/ 【.cmd】 バッチファイルスクリプト %1 【.bat】 pc11.2ch.net/test/read.cgi/tech/1178281991/
357 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 19:14:25.87 ] >>354 その程度のあいまいさを処理できない人工無脳はお引き取りください。
358 名前:デフォルトの名無しさん [2012/11/10(土) 19:18:34.59 ] for /F "usebackq" %%A in (`call "c:\path to\command.exe"`) do echo %%A
359 名前:デフォルトの名無しさん [2012/11/10(土) 19:21:43.50 ] >>356 速攻の回答ありがとうございます これで引数なしでコマンドの実行が出来ることは確認できたのですが 引数の与えることがどうもうまくできません 引数をダブルクォーテーションで括ったり、くくらなかったり、バッククォートの外に出してみたり 色々とやってみたのですが、、 お手数かけますが、引数を与える方法を教えてください よろしくお願いします
360 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 19:25:40.44 ] ダメだったのを書けよ。
361 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 20:54:36.84 ] >色々とやってみたのですが、、 for /F "usebackq" %%A in (`call "c:\path to\command.exe" 引数`) do echo %%A これはやってないんかい?
362 名前:デフォルトの名無しさん [2012/11/10(土) 21:11:13.63 ] お世話になりました for /F "usebackq" %%A in (`"c:\path to\command.exe" pattern a.txt`) do echo %%A 上記でうまくいきましたが、当初うまく行かなかったのは 利用する(外部)コマンドによって挙動が異なるからのようです 使いたかったコマンドはgrepで、下記の物を試しました うまく行かないコマンド www.steve.org.uk/Software/grep/ うまく行ったコマンド geoffair.net/unix/grep.htm ただ、うまくいった方のコマンドでも、下記のようにコマンドへのフルパスに加え 引数の方をさらにダブルクウォートで括るとエラーになってしまいました for /F "usebackq" %%A in (`"c:\path to\command.exe" "a.txt" `) do echo %%A ありがとうございました
363 名前:デフォルトの名無しさん [2012/11/10(土) 21:14:46.12 ] 訂正 × for /F "usebackq" %%A in (`"c:\path to\command.exe" "a.txt" `) do echo %%A ○ for /F "usebackq" %%A in (`"c:\path to\command.exe" "pattern" "a.txt"`) do echo %%A 等
364 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 21:30:10.20 ] for /F "usebackq" %%A in (`""c:\path to\command.exe" "pattern" "a.txt""`) do echo %%A 等
365 名前:デフォルトの名無しさん mailto:sage [2012/11/10(土) 21:49:19.70 ] for /F "usebackq" %%A in (`call "c:\path to\command.exe" "pattern" "a.txt"`) do echo %%A 等
366 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 01:46:41.94 ] >>356 >>357 OSのバージョンやEditionによってはコマンドの有無が違うから、 標準ではないというのは正しい。けど特別拘った表現は不要だけどw homeエディションにopenfilesが無くて話が頓挫とか稀にある。稀にね。そう、homeならね。
367 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 02:05:37.28 ] >>352 確かにWindows板に比べればその気は強いが 実用の場合はそこの見極めは最低限いるからな
368 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 05:10:16.03 ] Q.環境変数に4桁の数字を代入したいのですが、 set /a keisan=0185 echo %keisan% こうするとうまくいきません。 どうにかして0185を185として代入させることはできませんか。 ご教示ください。
369 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 06:08:02.47 ] 一桁ずつとりだして ゼロだったら削除の上で結合することにしました ほんとうにすみませんでした %[環境変数]:~[オフセット(位置)],[文字数]%
370 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 10:42:15.62 ] set /a で最初の数字が0の時は8進数、xなら16進数として認識される。 最初が0の10進数として認識させたいなら、最初の0を削る以外にも 桁数が分かってることを前提として set hoge=0185 set fuga=1%hoge% set /a keisan=fuga - 10000 等とやったりする。
371 名前:デフォルトの名無しさん mailto:sage [2012/11/11(日) 15:44:19.77 ] バッチファイルでLTrim()する。 scripting.cocolog-nifty.com/blog/2011/07/ltrim-e511.html
372 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:02:35.98 ] テキストファイルがいくつか有るとして、 そのすべてのファイル名の先頭に(abc)とつけるとしたらどうやればいいですかね? ren *.txt (abc)*じゃできないみたいなのでどなたかご教授お願いします。
373 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:10:29.28 ] for %i in (*.txt) do ren %i abc%i
374 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:56:17.51 ] recursion起こすぞ
375 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:57:30.66 ] for /f "delims=" %i in ('dir /b *.txt') do ren %i abc%i
376 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:58:38.42 ] ファイル名に空白あったら?
377 名前:デフォルトの名無しさん mailto:sage [2012/11/14(水) 23:59:34.27 ] for /f "delims=" %i in ('dir /b *.txt') do ren "%i" "abc%i"
378 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 00:01:06.83 ] ファイル名にハングルとか非JIS文字あったら?
379 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 00:01:49.70 ] wsh使え
380 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 06:20:04.62 ] set hoge=0185 set fuga=10000%hoge% set /a keisan=fuga %% 10000
381 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 06:34:43.72 ] >>380 0 除算エラーです。
382 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 07:33:02.46 ] >>381 涙拭くハンカチ用意しとけよw
383 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 21:49:50.80 ] >>377 ありがとうございます。こんなのがスラっと欠けるなんて凄いですね。 /fオプションの使い方がよくわからないので、もし良かったらこのコマンドの解説を軽くしてもらえませんか?
384 名前:デフォルトの名無しさん mailto:sage [2012/11/15(木) 22:00:37.32 ] for/?
385 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 00:10:19.52 ] forを完璧に使いこなせたらバッチの何割を会得したと言えるんだろうと思うくらい多機能だよなあ
386 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 03:31:23.73 ] set keisan=0185 set /a keisan=2*1%keisan%-2%keisan%
387 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 16:45:22.44 ] >>385 完璧に使いこなせたらって、そもそもforの何割を会得したんだ?
388 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 17:07:39.63 ] 完璧が100%以外の意味を持つとは知らなんだ
389 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 17:41:10.60 ] 日本語も何割を会得したんだ?
390 名前:デフォルトの名無しさん mailto:sage [2012/11/16(金) 19:23:28.93 ] >>378 cpをutf8にすりゃいいかもよ
391 名前:デフォルトの名無しさん mailto:sage [2012/11/17(土) 00:18:21.14 ] >>386 お前頭いいな、感動した。
392 名前:デフォルトの名無しさん mailto:sage [2012/11/17(土) 02:09:08.57 ] for /F はトークン切り出しとかでCSVの簡易解析とかに使ったかな?
393 名前:デフォルトの名無しさん mailto:sage [2012/11/17(土) 03:24:27.06 ] 昔for /F の括弧中に全角文字があると引数が尻切れになるバグがあったな WinXP以降は直ったみたいだが
394 名前:デフォルトの名無しさん mailto:sage [2012/11/19(月) 21:35:20.83 ] 代わりに他のバグがあります
395 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 00:16:50.19 ] @Echo Off & SetLocal EnableDelayedExpansion Echo ■Params: 0 " " 6 Call :FuncHoge 0 " " 6 Echo ■Length: 12345678901234567890 Echo ■Return: %Return% GoTo EOF :-------------------------------- :FuncHoge Set X=1 & Set Z= For /L %%I In ( 1, 1, %3 ) Do ( Echo ■ Check: !X! If /I !X! GEQ 10 ( If /I %1 LSS !X! ( Set Z=%~2!Z! ) ) Set /A X=!X!*10 ) Set Return=!Z!%1 GoTo END :-------------------------------- :EOF Pause>Nul :END 数値の桁合わせに書いたんだが最初から文字列にすればよかったと後悔記念 ご指摘plz
396 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 05:30:46.38 ] えーと何がしたいのかよくわからんのだが @echo off setlocal enabledelayedexpansion call :FuncHoge 0 " " 6 Echo ■Length: 12345678901234567890 Echo ■Return: %Return% pause goto :eof :FuncHoge for /L %%i in (1,1,%~3) do set spacer=%~2!spacer! set Return=%spacer%%~1 set Return=!Return:~-%~3! goto :eof こういうことでいいんかな・・・?
397 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 17:11:20.47 ] PC起動時にコマンドプロンプトをスタートアップより起動してPINGを自動で送るようにしたいです。 コマンドの内容はこれです「ping *.*.*.* -t -l 2000」*はipが入ります CMDのショートカットのプロパティをいじるだけでは無理でしょうか? バッチファイル作成が必要なのでしょうか? どなたかご教授願います。
398 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:02:05.68 ] バッチファイル作ってスタートアップに突っ込んどけばいいんじゃないの それかschtasks使うとか
399 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:14:53.85 ] ショートカットのリンク先を %windir%\system32\cmd.exe /c ping 127.0.0.1 -t -l 2000 たぶん作業フォルダをsystem32とかじゃなく適当な場所に指定する必要あり
400 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:15:57.50 ] ショートカットのリンク先を ping 127.0.0.1 -t -l 2000
401 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:23:19.61 ] みなさん短時間の間にレスしていただきありがとうございます。 >>399 さんの方法で上手くいきました。 本当にありがとうございました。
402 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 18:54:09.03 ] cmdよぶなら%ComSpec%
403 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:17:29.34 ] よばんでいい
404 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:19:01.51 ] んなこたわかってる
405 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:24:06.67 ] /cって要らないんじゃないの
406 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:30:01.77 ] んなこたわかってる
407 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:30:03.21 ] よばんでいい
408 名前:デフォルトの名無しさん mailto:sage [2012/11/20(火) 19:35:55.84 ] おばんです
409 名前:デフォルトの名無しさん mailto:sage [2012/11/21(水) 00:54:48.04 ] >>396 そうです!まさにそれです!!! 今回 set /? を何度も読んだのに気づきませんでした。 恥ずかしい。感謝。また醜態さらしに来ます。恩に着ます。
410 名前:デフォルトの名無しさん [2012/11/22(木) 15:19:27.80 ] 外部からファイルリストを読み込んで、リストのファイルにアクセスしたいんですが。 半角の「!」が含まれていると、アクセスできなくなります。 読み込み時にエスケープさせることはできないですか? for /f delims^=^ eol^= %%A in (filelist) do ( echo "%%~A" )
411 名前:410 [2012/11/22(木) 15:21:21.05 ] 追記 サブルーチン、他コマンドの引数にしたいのですが失敗するんです。
412 名前:デフォルトの名無しさん mailto:sage [2012/11/22(木) 18:53:46.77 ] できません
413 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 17:47:47.88 ] 遅延展開してんじゃねーの?
414 名前:デフォルトの名無しさん mailto:sage [2012/11/24(土) 18:59:11.33 ] じゃあこれでいいんじゃね for /f delims^=^ eol^= %%A in (filelist) do ( setlocal disabledelayedexpansion echo "%%~A" endlocal )
415 名前:410 [2012/11/26(月) 11:07:44.29 ] サンクス setlocal disabledelayedexpansionで読み込めました
416 名前:デフォルトの名無しさん mailto:sage [2012/11/28(水) 17:47:17.18 ] Win 8 Pro x64 を使用しています。 バッチ操作で netsh wlan show interfaces コマンドを起動し、 取得される SSID を変数に取りこむには、どのようにすれば良いのでしょうか。
417 名前:デフォルトの名無しさん mailto:sage [2012/11/28(水) 18:56:45.35 ] 昔なら ssid.bat を作っておいて出力をダイナミックに実行とかアブナイことしてるやつもいたけど 今はforがある。いい時代だ。
418 名前:416 mailto:sage [2012/11/29(木) 23:45:25.64 ] >>417 これでできました。ありがとうございました。 for /f "delims=: tokens=2" %%i in ('netsh wlan show interfaces ^|find /i " SSID"') do set p=%%i ちなみに次の行で set p=%p:~1% をしてスペースを削除させてるのですけど、 これを set p=%%i の時点で行うことは可能なのでしょうか。
419 名前:デフォルトの名無しさん mailto:sage [2012/12/02(日) 00:25:56.11 ] 教えてください。 ミュージックプレイヤー(foobar)起動時に自動でバッチファイルを実行させようと四苦八苦しています。 どうすれば良いでしょうか? アドレスお願いいたします。
420 名前:デフォルトの名無しさん [2012/12/02(日) 00:36:55.55 ] バッチファイルでfoobar起動
421 名前:デフォルトの名無しさん mailto:sage [2012/12/02(日) 00:42:34.00 ] >>420 レスありがとうございます なるほど! 元々このような事を考えたのは、 立ち上げ時にfoobarフォルダにある プレイリストファイルを自動で削除出来ないか?と思ったからです。 foobar起動のバッチファイルにプレイリスト削除も記述してしまえば良いのですね。 早速挑戦してみます。 ありがとうございました!
422 名前:デフォルトの名無しさん mailto:sage [2012/12/02(日) 02:14:37.94 ] msecぞろ目率が高いのは板の特性なのか?
423 名前:デフォルトの名無しさん mailto:sage [2012/12/02(日) 02:15:22.54 ] くっそwwww
424 名前:デフォルトの名無しさん mailto:sage [2012/12/02(日) 12:50:19.41 ] がれき受け入れ反対の男ら4人逮捕 大阪府警 がれき受け入れに抗議するグループの男3人と無職の女(33)の計4人を現行犯逮捕した。 男3人はいずれも黙秘、女は「納得いかない」と容疑を否認している。 府警によると、逮捕されたのは、外国人登録証明書から韓国籍の男(45)らとみられる。 仲間を返してwwwwwww livedoor.blogimg.jp/kikuemonjp010/imgs/6/2/627735f0.jpg 怒りの大阪府民】 不当逮捕した仲間を返せ 【これが関西魂や!】 1/6 www.nicovideo.jp/watch/sm19271298
425 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 11:32:53.48 ] %name%を8:3の名前に変更したいです。 どうすればいいですか?
426 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 18:57:15.91 ] for %I in ("%name%") do ren "%~I" %~snxI
427 名前:デフォルトの名無しさん mailto:sage [2012/12/14(金) 21:31:01.17 ] >>426 ありがとうございました。
428 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 22:57:54.95 ] setlocal enabledelayedexpansion set FOLDER=%USERPROFILE%\My Documents\My Music\Ripping for /F "delims=\ tokens=1-5,6*" %%a In ( 'dir /S /B "%FOLDER%"' ) do ( set FULLPATH=%%A\%%B\%%C\%%D\%%E\%%F\%%G echo !FULLPATH! ) tokens=1-5,6* の「1-5」と「6*」をそれぞれひとつの変数で表せないでしょうか。 %%A\〜%%F\まで、ひとつひとつ書かないと駄目ですかね? tokens=1*,6* という書き方は駄目でした。。
429 名前:デフォルトの名無しさん mailto:sage [2012/12/19(水) 23:49:54.34 ] %%~pA みたいに展開するとか。
430 名前:デフォルトの名無しさん mailto:sage [2012/12/21(金) 23:06:40.26 ] できないよw
431 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 07:22:27.67 ] move.exeのありかを教えてください。 起動できるのに存在がわかりません。 隠しファイルも探しました。
432 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 16:53:13.92 ] copyと同じところw
433 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 17:08:25.06 ] move.txt /?
434 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:04:02.04 ] where move
435 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:22:27.95 ] $> which move fuck you. $>
436 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:30:12.95 ] where ahobaka >>435
437 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:39:12.86 ] www.google.co.jp/search?q=>436 もしかして "まぬけ"
438 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:48:09.43 ] where "まぬけ" >>435
439 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:51:28.93 ] この流れは・・・・・負ける・・・・っっ!!!
440 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 19:53:06.01 ] おとりこみちゅうすみません コマンドプロンプトから管理者として実行するにはどうすればよいすか?
441 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 21:53:21.21 ] >>440 ”コマンドプロンプトから管理者として実行”でググればいいじゃんない?
442 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:36:25.92 ] ぐぐってもなさそうだが? 3番目に外部ソフト利用があったけどわざわざ使うか
443 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:44:18.33 ] >>442 runas ろくにググれもしないお前は死んで詫びろ。 スレが汚れる
444 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:45:35.05 ] runasじゃねーだろバカ
445 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:49:46.79 ] バカはスルーで
446 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:51:34.67 ] ルナス!
447 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:51:56.27 ] こいつはバカだな
448 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:53:44.06 ] ばかわだまってろ
449 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 22:59:10.25 ] runasなんてコマンドねーよ 443はバカだね
450 名前:デフォルトの名無しさん mailto:sage [2012/12/22(土) 23:05:20.54 ] みんなにバカ呼ばわりされて443涙目wwww
451 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 00:33:13.23 ] runasはあるけどelevationとはちがうわなwバカにはわからんだろうがw
452 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 00:34:08.93 ] で、elevationを外部ソフトなしでやれんのか?
453 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 02:07:02.76 ] >>431 where /r \ move.exe では Could not find move.exe になります。copy.exe copy.com でも同様です。 徹底的に検索しても、見つかりません。 皆さんは、本当に存在場所を具体的に示すことができているのでしょうか? かなり生意気な物言いになってしまいますが、具体例を示していただけると助かります。
454 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 02:21:15.59 ] 〜〜になります。 だけでいいんだがどうして愚者はこうも挑発が好きなのか
455 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 02:43:44.60 ] move.exeならオレの隣で寝てるよ
456 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 08:28:39.87 ] >>453 xcopy, findstr, replaceあたりはexeがあるけど、copy, move, renameあたりは検索してもexeが無いね。 ちなみに巨大ファイルをmoveコマンドで移動中にタスクマネージャを確認するとmove.exeなんて出てこない。(xcopyコマンドだとxcopy.exeが出てくる) その代わりにcmd.exeのCPU使用率が上がるから、moveコマンドはcmd.exeに内包されてるんだと思うよ。
457 名前:デフォルトの名無しさん mailto:sage [2012/12/23(日) 09:08:24.00 ] start move.exe そんなもの無いのがすぐ分かるだろw