拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
それ以前の過去スレ
%10 http://peace.2ch.net/test/read.cgi/tech/1374205515/
%9 http://toro.2ch.net/test/read.cgi/tech/1335015478/
%8 http://toro.2ch.net/test/read.cgi/tech/1315844420/
%7 http://hibari.2ch.net/test/read.cgi/tech/1298873550/
%6 http://hibari.2ch.net/test/read.cgi/tech/1277465356/
%5 http://pc12.2ch.net/test/read.cgi/tech/1242268171/
%4 http://pc12.2ch.net/test/read.cgi/tech/1229955189/
%3 http://pc11.2ch.net/test/read.cgi/tech/1217860043/
%2 http://pc12.2ch.net/test/read.cgi/tech/1197881068/
%1 http://pc11.2ch.net/test/read.cgi/tech/1178281991/
探検
【.cmd】 バッチファイルスクリプト %12 【.bat】©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/03/11(土) 13:47:11.66ID:2LSSeyH1
175デフォルトの名無しさん
2017/08/29(火) 14:35:48.67ID:91TLAHUR フォルダの中に、あああ_1.flv あああ_2.flv … あああ_100.flvのようなファイルがあるときに、あああ_1.flvをあああ_001.flvのようにリネームしたりできないんでしょうか
176デフォルトの名無しさん
2017/08/29(火) 15:34:02.29ID:ZSKrJS0x >>175
Flexible Renamer
Flexible Renamer
177デフォルトの名無しさん
2017/08/29(火) 16:50:10.59ID:iDduY4Qi お〜瑠璃ね〜むで十分やぞ
D&D用のショトカも作れるしな
D&D用のショトカも作れるしな
178デフォルトの名無しさん
2017/08/29(火) 17:11:24.47ID:1aRkt9bd179デフォルトの名無しさん
2017/08/29(火) 20:06:42.61ID:KnTCuJQc set "a=あああ_"
set "b=.flv"
setlocal enabledelayedexpansion
for /L %%i in (1,1,99) do set /a c=%%i+1000 & ren "!a!%%i!b!" "!a!!c:~1!!b!"
set "b=.flv"
setlocal enabledelayedexpansion
for /L %%i in (1,1,99) do set /a c=%%i+1000 & ren "!a!%%i!b!" "!a!!c:~1!!b!"
180デフォルトの名無しさん
2017/08/31(木) 16:38:58.30ID:omILiWW+ >>175
pushd "%~dp1"
:LOOP
for /f "tokens=1,2 delims=_" %%a in ("%~n1") do (
set FNAME=%%a
set /a FN=%%b+1000
)
ren "%~1" "%FNAME%_%FN:~-3%%~x1"
shift
if not "%~1"=="" goto :LOOP
pushd "%~dp1"
:LOOP
for /f "tokens=1,2 delims=_" %%a in ("%~n1") do (
set FNAME=%%a
set /a FN=%%b+1000
)
ren "%~1" "%FNAME%_%FN:~-3%%~x1"
shift
if not "%~1"=="" goto :LOOP
181デフォルトの名無しさん
2017/08/31(木) 17:02:31.64ID:KsdTyPQv182デフォルトの名無しさん
2017/08/31(木) 17:53:19.91ID:Vr+Gp9oD どのスレでも一緒だが質問の要件が分かりにくいのはめんどうだな
183デフォルトの名無しさん
2017/08/31(木) 18:00:47.56ID:kMuf1wHV なんでか知らないけど他人に勝手にマルチポストされたけど>>175の質問は元のスレで解決したのでもういいです
184デフォルトの名無しさん
2017/09/03(日) 22:03:48.56ID:BJjXydYg cd \
pushd D:\abc
setlocal
popd
としても元の \ に戻らなかった
pushd D:\abc
setlocal
popd
としても元の \ に戻らなかった
185デフォルトの名無しさん
2017/09/04(月) 00:02:37.80ID:pBY/MKIa >>184
そうならなきゃ逆にダメでしょ
setlocalでは(親の環境を引き継いだ)別の環境の上で実行されている
カレントを移動しようが環境変数を操作しようが元の環境には影響しない
pushd D:\abc
setlocal
endlocal
popd
または
setlocal
pushd D:\abc
endlocal
そうならなきゃ逆にダメでしょ
setlocalでは(親の環境を引き継いだ)別の環境の上で実行されている
カレントを移動しようが環境変数を操作しようが元の環境には影響しない
pushd D:\abc
setlocal
endlocal
popd
または
setlocal
pushd D:\abc
endlocal
186デフォルトの名無しさん
2017/09/04(月) 01:15:44.81ID:24unggVp187デフォルトの名無しさん
2017/09/16(土) 05:02:43.18ID:cRJ1WDqm 今さらバッチファイル入門て…
余計な被害者増やさずPowerShellにしろよ
これだからIT後進国は
超入門コマンドプロンプト:バッチコマンドで定型処理を行う (1/3) - @IT
http://www.atmarkit.co.jp/ait/articles/1709/15/news034.html
017年09月15日 05時00分 公開
余計な被害者増やさずPowerShellにしろよ
これだからIT後進国は
超入門コマンドプロンプト:バッチコマンドで定型処理を行う (1/3) - @IT
http://www.atmarkit.co.jp/ait/articles/1709/15/news034.html
017年09月15日 05時00分 公開
188デフォルトの名無しさん
2017/09/16(土) 05:59:12.53ID:TbhIjs8j189デフォルトの名無しさん
2017/09/16(土) 06:09:12.67ID:NzFbxZfY PowerShellに移行しようと思ったこともあるけどファイルをD&D出来ないから断念した
あと他人の環境で動くのか分からないから渡しにくいし
あと他人の環境で動くのか分からないから渡しにくいし
190デフォルトの名無しさん
2017/09/16(土) 06:11:20.82ID:NzFbxZfY まあbatに面倒臭いとこがあるのも理解できるけど
せめて正規表現と小数の計算くらいはあればよかったんだが
せめて正規表現と小数の計算くらいはあればよかったんだが
191デフォルトの名無しさん
2017/09/16(土) 11:00:27.02ID:Nvo3nRRv 自分で使うにはPoweShellはめちゃめちゃ便利だけど
一般的に定着してるかというとそうじゃないし
一般的に定着してるかというとそうじゃないし
192デフォルトの名無しさん
2017/09/17(日) 11:17:50.05ID:jtG62g+O PowerShell は起動が遅いから小さいバッチをループで呼び出すのには向いてないんじゃないかな。
いったんロードしたオブジェクトを関数形式で呼び出せばいいんだろうけどよくわからなくてめんどくさいし。
いったんロードしたオブジェクトを関数形式で呼び出せばいいんだろうけどよくわからなくてめんどくさいし。
193デフォルトの名無しさん
2017/09/17(日) 11:23:06.30ID:jtG62g+O 最近、フリーソフトとかの小さいやつの管理がめんどくさくなって
メニュー代わりにバッチファイルを使うことにしたんですよ。
全部をVHDに入れてマウントなんで、持ち運びは仮想ディスクファイル1個をコピーするだけ。
起動が素早いのがメリット。
アイコンが出ないのがデメリット。
アイコン出そうと思ったら全環境で共通のドライブ名に固定してショートカットを使ったらいいと思うけど。
プログラムの入ったフォルダ
Program Files 3
バッチファイルの入ったフォルダ
Program Link
[FirefoxPortable.bat]
set pathname1=%~d0\Program Files 3\FireFoxPortable52.0.2\FirefoxPortable\FirefoxPortable.exe
start "" "%pathname1%"
メニュー代わりにバッチファイルを使うことにしたんですよ。
全部をVHDに入れてマウントなんで、持ち運びは仮想ディスクファイル1個をコピーするだけ。
起動が素早いのがメリット。
アイコンが出ないのがデメリット。
アイコン出そうと思ったら全環境で共通のドライブ名に固定してショートカットを使ったらいいと思うけど。
プログラムの入ったフォルダ
Program Files 3
バッチファイルの入ったフォルダ
Program Link
[FirefoxPortable.bat]
set pathname1=%~d0\Program Files 3\FireFoxPortable52.0.2\FirefoxPortable\FirefoxPortable.exe
start "" "%pathname1%"
194デフォルトの名無しさん
2017/09/17(日) 12:31:00.83ID:z++LvPT9 それだけならバッチ作るまでもなくハードリンクにすればアイコン問題も解決では
195デフォルトの名無しさん
2017/09/17(日) 12:37:46.24ID:z++LvPT9 あ、すまんそれだと実行ファイルと同じフォルダのDLL読めないからダメか
196デフォルトの名無しさん
2017/09/18(月) 00:06:56.51ID:AVBMNnfo 短いファイル名に関していくつか質問
1 短いファイル名はダブルクオーテーションで囲まなくても実行可能?
2 短いファイル名は取得して一ヶ月経っても変動せずにそのパスを実行出来る?
1 短いファイル名はダブルクオーテーションで囲まなくても実行可能?
2 短いファイル名は取得して一ヶ月経っても変動せずにそのパスを実行出来る?
197デフォルトの名無しさん
2017/09/18(月) 23:50:36.04ID:2dThcY7y198デフォルトの名無しさん
2017/09/19(火) 00:09:36.87ID:I5t298fo 少なくともNTFSではファイルの情報としてショートファイルネームも格納されるから
ファイルが存在したままある日突然名前が変わることはないはず
そのファイルを削除して似たようなロングファイルネームの別のファイルを作った時
同名だけど別のファイルが出来てしまう事はありえる
ファイルが存在したままある日突然名前が変わることはないはず
そのファイルを削除して似たようなロングファイルネームの別のファイルを作った時
同名だけど別のファイルが出来てしまう事はありえる
199196
2017/09/19(火) 01:33:17.50ID:FIGNw+kF レスありがとうございます。
ちなみに自分がやりたかったのは↓と同じケースで自作のbatをタスクスケジューラに登録したいというものでした。
schtasksで半角スペースを含むパスを実行させたい (DOSプロンプト活用相談室LOG)
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/taskkillstart/at/4-0842.html
"を\"と書いてエスケープさせるやり方もあるようですがそちらではbatにダブルクォーテーションで囲った引数を渡すと不可解な動作をすることがあり上手くいきせんでした。
batのパスにスペースを含んだ場合 起動しない
batのパスにスペースを含まない場合 %~dp0を実行したときにbatのフォルダパスの頭にカレントディレクトリの文字列も追加される
ちなみに自分がやりたかったのは↓と同じケースで自作のbatをタスクスケジューラに登録したいというものでした。
schtasksで半角スペースを含むパスを実行させたい (DOSプロンプト活用相談室LOG)
http://fpcu.on.coocan.jp/dosvcmd/bbs/log/taskkillstart/at/4-0842.html
"を\"と書いてエスケープさせるやり方もあるようですがそちらではbatにダブルクォーテーションで囲った引数を渡すと不可解な動作をすることがあり上手くいきせんでした。
batのパスにスペースを含んだ場合 起動しない
batのパスにスペースを含まない場合 %~dp0を実行したときにbatのフォルダパスの頭にカレントディレクトリの文字列も追加される
200デフォルトの名無しさん
2017/09/19(火) 02:17:59.79ID:Lhe/hdFe mklinkやsubstを使って違う名前でアクセスするのはどうなのでしょう
うまくいくかどうかわかりませんが
ファイル名フォルダ名に空白や%^!みたいな記号があると困ることが多いですね
うまくいくかどうかわかりませんが
ファイル名フォルダ名に空白や%^!みたいな記号があると困ることが多いですね
201デフォルトの名無しさん
2017/09/20(水) 03:12:37.88ID:aIPv0JYK >>199
この書き方に準じていないだけでは?
A Scheduled Task Does Not Run When You Use Schtasks.exe to Create It and When the Path of the Scheduled Task Contains a Space
https://support.microsoft.com/en-us/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a
Schtasks.exe を使用して、スケジュールされたタスクのパスにスペースが含まれている場合を作成するときにスケジュールされたタスクが実行されません。
https://support.microsoft.com/ja-jp/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a
失敗例
schtasks /create /tn "my task" /tr "c:\foldername containing spaces\script.bat arguments" /sc once /sd 07/29/2003 /st 10:01
成功例
schtasks /create /tn "my task" /tr "\"c:\foldername name containing spaces\script.bat\" arguments" /sc once /sd 07/29/2003 /st 10:01
この書き方に準じていないだけでは?
A Scheduled Task Does Not Run When You Use Schtasks.exe to Create It and When the Path of the Scheduled Task Contains a Space
https://support.microsoft.com/en-us/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a
Schtasks.exe を使用して、スケジュールされたタスクのパスにスペースが含まれている場合を作成するときにスケジュールされたタスクが実行されません。
https://support.microsoft.com/ja-jp/help/823093/a-scheduled-task-does-not-run-when-you-use-schtasks-exe-to-create-it-a
失敗例
schtasks /create /tn "my task" /tr "c:\foldername containing spaces\script.bat arguments" /sc once /sd 07/29/2003 /st 10:01
成功例
schtasks /create /tn "my task" /tr "\"c:\foldername name containing spaces\script.bat\" arguments" /sc once /sd 07/29/2003 /st 10:01
202196
2017/09/20(水) 06:44:59.65ID:w13Y3qRA >>201
自分の説明が下手で伝わらなかったんだと思いますが、成功例の方の記述でパスにスペースを含むbatは起動できるのですがそのbatにダブルクオーテーションを含む引数を渡すと動作がおかしくなるのです。
引数にダブルクオーテーションを含まない場合は正常に起動できます。
自分の説明が下手で伝わらなかったんだと思いますが、成功例の方の記述でパスにスペースを含むbatは起動できるのですがそのbatにダブルクオーテーションを含む引数を渡すと動作がおかしくなるのです。
引数にダブルクオーテーションを含まない場合は正常に起動できます。
203196
2017/09/20(水) 07:01:29.72ID:w13Y3qRA 一応追記しておくと、おかしくなるのはタスクスケジューラから起動した場合限定で通常の起動では問題ありません。
呼び出すbat内の記述にミスがあるとかそういうのではないと思います。
呼び出すbat内の記述にミスがあるとかそういうのではないと思います。
204デフォルトの名無しさん
2017/09/21(木) 11:18:59.39ID:WXZB4PjF %CMDCMDLINE%はどうなってる?
205デフォルトの名無しさん
2017/09/21(木) 18:15:09.28ID:X0F1M9Qy argumentにダブルクォーテションがある場合もパスと同様に\"してる?
206デフォルトの名無しさん
2017/09/21(木) 18:35:03.44ID:uKBRYTKY test
207196
2017/09/21(木) 18:38:58.99ID:uKBRYTKY NGワードが含まれていたようなので他所に書きました
https://pastebin.com/9yMQfC37
https://pastebin.com/9yMQfC37
208デフォルトの名無しさん
2017/09/24(日) 20:04:30.28ID:0vysq0yQ 基本的に引数の中の半角スペースはデリミタであり
そこより左に " が奇数個あればデリミタじゃなくなる
それに関しては \" とか ^" とかあっても関係ないんじゃね
そこより左に " が奇数個あればデリミタじゃなくなる
それに関しては \" とか ^" とかあっても関係ないんじゃね
209デフォルトの名無しさん
2017/09/25(月) 14:27:46.65ID:aNTDK6ge >>207
もう見てないかも知れないけど
schtasks /create /tn "test\test" /sc once /st 23:00 /tr "cmd /s /c \"\"C:\schtasks test\schtaskstest.bat\" hoge1 hoge2 \"ho ge3\" \"h oge4\"\""
これだと実行ファイルのパスにスペースがあっても問題ない
もう見てないかも知れないけど
schtasks /create /tn "test\test" /sc once /st 23:00 /tr "cmd /s /c \"\"C:\schtasks test\schtaskstest.bat\" hoge1 hoge2 \"ho ge3\" \"h oge4\"\""
これだと実行ファイルのパスにスペースがあっても問題ない
210196
2017/09/26(火) 15:58:12.82ID:dvSxVtoZ211デフォルトの名無しさん
2017/10/10(火) 23:43:05.86ID:Z33TeZgR 文字コードがUTF8のテキストファイルが2つあるのですが
FCコマンドで差分を出力したところ文字化けしてしまいました。
何か良い方法はないでしょうか?
FCコマンドで差分を出力したところ文字化けしてしまいました。
何か良い方法はないでしょうか?
212デフォルトの名無しさん
2017/10/11(水) 07:47:52.42ID:S/IKnpLv メモ帳でSJISで保存する
213デフォルトの名無しさん
2017/10/12(木) 16:57:41.08ID:c/LUECgg なんでSJISなんだよ、unicodeにすればいいじゃん(Windows2000,XPは除く)
@echo off
set f1=%1
set f2=%2
if not defined f2 echo 引数1.2に比較するファイルパスを指定してください& goto :eof
if not exist %f1% echo ファイル %1 がありません& goto :eof
if not exist %f2% echo ファイル %2 がありません& goto :eof
start "" /min /wait cmd /u /c "chcp 65001 & type %1>u_%1 & type %2>u_%2"
chcp 932>nul
fc /u /n u_%1 u_%2
del u_%1 u_%2
@echo off
set f1=%1
set f2=%2
if not defined f2 echo 引数1.2に比較するファイルパスを指定してください& goto :eof
if not exist %f1% echo ファイル %1 がありません& goto :eof
if not exist %f2% echo ファイル %2 がありません& goto :eof
start "" /min /wait cmd /u /c "chcp 65001 & type %1>u_%1 & type %2>u_%2"
chcp 932>nul
fc /u /n u_%1 u_%2
del u_%1 u_%2
214デフォルトの名無しさん
2017/10/12(木) 18:25:29.18ID:c/LUECgg start付けるとうまくいかないな
訂正
start "" /min /wait cmd /c "chcp 65001&cmd /u /c type %1>u_%1&cmd /u /c type %2>u_%2"
fc /u /n u_%1 u_%2
訂正
start "" /min /wait cmd /c "chcp 65001&cmd /u /c type %1>u_%1&cmd /u /c type %2>u_%2"
fc /u /n u_%1 u_%2
215デフォルトの名無しさん
2017/10/16(月) 01:07:49.23ID:rrtzmh2c バッチファイル作っておいて以下のようなフォルダの名前の変更を毎回ダブルクリック一発で済ませたいのですが
いろいろやってみたのですが、というほどの力もなく
お知恵お貸し下さい
処理前のフォルダ名一覧
1008安住紳一郎の日曜天国
10月15日安住紳一郎の日曜天国
10月15日爆笑問題の日曜サンデー (1)
10月15日爆笑問題の日曜サンデー (2)
処理後のフォルダ名
1008安住紳一郎の日曜天国
1015安住紳一郎の日曜天国
1015爆笑問題の日曜サンデー (1)
1015爆笑問題の日曜サンデー (2)
いろいろやってみたのですが、というほどの力もなく
お知恵お貸し下さい
処理前のフォルダ名一覧
1008安住紳一郎の日曜天国
10月15日安住紳一郎の日曜天国
10月15日爆笑問題の日曜サンデー (1)
10月15日爆笑問題の日曜サンデー (2)
処理後のフォルダ名
1008安住紳一郎の日曜天国
1015安住紳一郎の日曜天国
1015爆笑問題の日曜サンデー (1)
1015爆笑問題の日曜サンデー (2)
216デフォルトの名無しさん
2017/10/16(月) 04:34:03.61ID:3Tj/cKOj vbs 正規表現置換 ファイルリネーム
217デフォルトの名無しさん
2017/10/16(月) 08:11:27.58ID:GL/w6Jlo >>215
for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r "[0-9][0-9]月[0-9][0-9]日"') do call :SUB "%%~a"
exit /b
:SUB
set s=%~1
ren %1 "%s:~0,2%%s:~3,2%%s:~6%"
for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r "[0-9][0-9]月[0-9][0-9]日"') do call :SUB "%%~a"
exit /b
:SUB
set s=%~1
ren %1 "%s:~0,2%%s:~3,2%%s:~6%"
218デフォルトの名無しさん
2017/10/16(月) 23:00:12.58ID:rrtzmh2c >>216
ヒント下さったようでありがとうございます。でも、ゼロから書き始めることが出来ないんです。
>>217
私の求めていた動作です。これで完璧、ありがとうございます
ひと安心して解析に移ったわけです。。。
1.
"[0-9][0-9]月[0-9][0-9]日"
↑これでは22月33日にも対応というわけか、こやつめハハハ
フォルダ名の行頭部分は日付として機械的に生成される予想できる値ですので[0-9]で何の問題もないです。
勉強の為に、ここをいじってみました。
Month部分は、1 2 3...10 11 12、なら[1-12]で済むのかな。
ところが0埋めなので、01 02 03...10 11 12、となると、0[1-9]|1[0-2]、かな。
Day部分は、01 02 03...29 30 31、うーん0[1-9]|[1-2][0-9]|3[0-1]、となる。
これらを書き換えてみて、はい、動きませんでした。
今回のような自分用プログラムは動けばよいわけで、教えて下さった[0-9]で何の問題もない。
これ以上無駄な時間を掛けても&シンプルな方が可読性がよい
ヒント下さったようでありがとうございます。でも、ゼロから書き始めることが出来ないんです。
>>217
私の求めていた動作です。これで完璧、ありがとうございます
ひと安心して解析に移ったわけです。。。
1.
"[0-9][0-9]月[0-9][0-9]日"
↑これでは22月33日にも対応というわけか、こやつめハハハ
フォルダ名の行頭部分は日付として機械的に生成される予想できる値ですので[0-9]で何の問題もないです。
勉強の為に、ここをいじってみました。
Month部分は、1 2 3...10 11 12、なら[1-12]で済むのかな。
ところが0埋めなので、01 02 03...10 11 12、となると、0[1-9]|1[0-2]、かな。
Day部分は、01 02 03...29 30 31、うーん0[1-9]|[1-2][0-9]|3[0-1]、となる。
これらを書き換えてみて、はい、動きませんでした。
今回のような自分用プログラムは動けばよいわけで、教えて下さった[0-9]で何の問題もない。
これ以上無駄な時間を掛けても&シンプルな方が可読性がよい
219デフォルトの名無しさん
2017/10/16(月) 23:01:09.80ID:rrtzmh2c 2.
for a in ('標準出力 パイプ 標準入力') do
この部分、パイプの縦棒の左にくっついてる^は何者なのでしょう。。。初めて見ました。
アッ、日付部分が行頭だからか?いやfindstrに行頭オプションの/Bが付いてるし、そもそもパイプの左になぜ?
検索してみたのですがわからずここで冷や汗が出てきて
ウーンこれはなんなんだろう。そもそもメタ文字なのか銅貨さえわからない。
3.
そもそも何をしているのかというとradikoというプログラムでお気に入りのラジオ番組を録音しています。
AMラジオ番組ではCMのほとんどが過払い金のCMで聞きたくないのでスキップしたいのです。
ウォークマンで右ボタンを長押しすると早送り再生になるのですが、突然入るCMにイラッときて
長押しではなく短く押してしまって次のmp3ファイルに飛んでしまうのです。イライラッ!
そこで1分ごとに分割してしまうことにしました。mp3directcutというソフトを使って切り出すことが出来ることを
知りました。そのうち、切り出し作業が面倒になって調べていくうちにコマンドラインでの実行も可能と分かり、
バッチファイル化の作業に掛かりました。出来上がったのは以下のような4行のバッチファイルです。
@echo on
echo %*
for /D %%a in (%*) do (mkdir "%%~na")&(copy 1min.mpd "%%~na".mpd)&(mp3directcut "%%~fa" /autocue "%~dp1%%~na")&(del "%%~fa")&(del "%%~na".mpd)
pause
1min.mpdというのは1分ごとに切る指定が記述されているキューファイルです。同名の.mpdファイルがあるとそれを使ってくれるみたいなので、最初に元ファイルとして作っておきます。
1分ごとに切り分けられたものを再生してもけっこう大丈夫で、音楽だと気付く程度です。
いろいろ書いてしまいましたが頭が精一杯なのでとりあえずお礼申し上げ失礼ます
for a in ('標準出力 パイプ 標準入力') do
この部分、パイプの縦棒の左にくっついてる^は何者なのでしょう。。。初めて見ました。
アッ、日付部分が行頭だからか?いやfindstrに行頭オプションの/Bが付いてるし、そもそもパイプの左になぜ?
検索してみたのですがわからずここで冷や汗が出てきて
ウーンこれはなんなんだろう。そもそもメタ文字なのか銅貨さえわからない。
3.
そもそも何をしているのかというとradikoというプログラムでお気に入りのラジオ番組を録音しています。
AMラジオ番組ではCMのほとんどが過払い金のCMで聞きたくないのでスキップしたいのです。
ウォークマンで右ボタンを長押しすると早送り再生になるのですが、突然入るCMにイラッときて
長押しではなく短く押してしまって次のmp3ファイルに飛んでしまうのです。イライラッ!
そこで1分ごとに分割してしまうことにしました。mp3directcutというソフトを使って切り出すことが出来ることを
知りました。そのうち、切り出し作業が面倒になって調べていくうちにコマンドラインでの実行も可能と分かり、
バッチファイル化の作業に掛かりました。出来上がったのは以下のような4行のバッチファイルです。
@echo on
echo %*
for /D %%a in (%*) do (mkdir "%%~na")&(copy 1min.mpd "%%~na".mpd)&(mp3directcut "%%~fa" /autocue "%~dp1%%~na")&(del "%%~fa")&(del "%%~na".mpd)
pause
1min.mpdというのは1分ごとに切る指定が記述されているキューファイルです。同名の.mpdファイルがあるとそれを使ってくれるみたいなので、最初に元ファイルとして作っておきます。
1分ごとに切り分けられたものを再生してもけっこう大丈夫で、音楽だと気付く程度です。
いろいろ書いてしまいましたが頭が精一杯なのでとりあえずお礼申し上げ失礼ます
220デフォルトの名無しさん
2017/10/16(月) 23:34:41.57ID:1IRdIkAf >>219
^(キャレット)はエスケープ文字
これを付けずに実行すると、コマンドラインパーサで式評価時にパイプとして機能しちゃう
つまりfor文の途中にパイプが現れてそこで途切れちゃうことになる
やりたいことは、この行の最初の評価時には単なる|の文字として取り扱ってもらい
次の''で括ったコマンドの評価時にはパイプとして機能してほしいってわけ
1回の評価を→で表すとすると、
^| → |
^^| → ^| → |
^^^^| → ^^| → ^| → |
って感じに展開されていく(俺は3回まで使ったことがある)
%a%とかの環境変数の評価も似たようなもんだね
%%a%% → %a%
^(キャレット)はエスケープ文字
これを付けずに実行すると、コマンドラインパーサで式評価時にパイプとして機能しちゃう
つまりfor文の途中にパイプが現れてそこで途切れちゃうことになる
やりたいことは、この行の最初の評価時には単なる|の文字として取り扱ってもらい
次の''で括ったコマンドの評価時にはパイプとして機能してほしいってわけ
1回の評価を→で表すとすると、
^| → |
^^| → ^| → |
^^^^| → ^^| → ^| → |
って感じに展開されていく(俺は3回まで使ったことがある)
%a%とかの環境変数の評価も似たようなもんだね
%%a%% → %a%
221デフォルトの名無しさん
2017/10/16(月) 23:49:53.08ID:1IRdIkAf 環境変数の評価を遅延させる方法はつまり
%%temp%%と%^temp%との2通り書けるわけだ
(結果的に同じになるけど動作は違う)
%%temp%%と%^temp%との2通り書けるわけだ
(結果的に同じになるけど動作は違う)
222デフォルトの名無しさん
2017/10/16(月) 23:57:55.48ID:1IRdIkAf >>221
これはコマンドプロンプトでのことでbatに書くときはダメだね
これはコマンドプロンプトでのことでbatに書くときはダメだね
223デフォルトの名無しさん
2017/10/17(火) 00:03:17.05ID:bWF1v8hX 評価と展開がごっちゃになってる
俺の理解が浅い(忘れっぽい)せいだな
俺の理解が浅い(忘れっぽい)せいだな
224デフォルトの名無しさん
2017/10/17(火) 07:18:41.23ID:3NFRyYoM ここで言ってる遅延と、いわゆる「遅延展開」は別物ですか?
225デフォルトの名無しさん
2017/10/17(火) 09:05:40.81ID:fpIKg5e5 >>218
>Month部分は、1 2 3...10 11 12、なら[1-12]
[]は文字集合。[]内の文字のうち何れか1文字という意味。文字列は扱えない
[1-12]だと"1-1"と"2"という意味で1か2になる
01-12月、01-31日を表すのなら [01][0-9]月[0-3][0-9]日
[01]が0か1で十の位、[0-9]が0から9で一の位
桁の揃っている01なら可能だが1-12月はfindstrの貧弱な正規表現では1度に表すのは無理なので
1桁の場合と2桁の場合とを別けて検索文字列に設定する必要がある
ちょ、誰か
findstr /r "検索文字列" とfindstr /r /c:"検索文字列" の違いを教えてくれ。忘れた
>Month部分は、1 2 3...10 11 12、なら[1-12]
[]は文字集合。[]内の文字のうち何れか1文字という意味。文字列は扱えない
[1-12]だと"1-1"と"2"という意味で1か2になる
01-12月、01-31日を表すのなら [01][0-9]月[0-3][0-9]日
[01]が0か1で十の位、[0-9]が0から9で一の位
桁の揃っている01なら可能だが1-12月はfindstrの貧弱な正規表現では1度に表すのは無理なので
1桁の場合と2桁の場合とを別けて検索文字列に設定する必要がある
ちょ、誰か
findstr /r "検索文字列" とfindstr /r /c:"検索文字列" の違いを教えてくれ。忘れた
226デフォルトの名無しさん
2017/10/17(火) 10:39:26.27ID:AWu3veoe >>225
解説ありがとうございます
とりあえず日付の所いろいろやってみてるのですがうまく行かないままです。
正規表現といわず直接文字列を指定して | が有効になるかどうかというところから実験してます。
for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r ""10月15日"|"10月16日""') do call :SUB "%%~a"
pause
exit /b
:SUB
rem set s=%~1
rem ren %1 "%s:~0,2%%s:~3,2%%s:~6%"
findstrについての解説は検索で出てきた
http://www.atmarkit.co.jp/ait/articles/0412/18/news018.html
を読みました。読んだだけです。頑張ります
解説ありがとうございます
とりあえず日付の所いろいろやってみてるのですがうまく行かないままです。
正規表現といわず直接文字列を指定して | が有効になるかどうかというところから実験してます。
for /f "delims=" %%a in ('dir /ad /b ^| findstr /b /r ""10月15日"|"10月16日""') do call :SUB "%%~a"
pause
exit /b
:SUB
rem set s=%~1
rem ren %1 "%s:~0,2%%s:~3,2%%s:~6%"
findstrについての解説は検索で出てきた
http://www.atmarkit.co.jp/ait/articles/0412/18/news018.html
を読みました。読んだだけです。頑張ります
227デフォルトの名無しさん
2017/10/17(火) 11:38:46.09ID:fpIKg5e5 >""10月15日"|"10月16日""
"で""を囲えないしfindstrの正規表現で|は使えない
findstr /?
まともな正規表現を使いたければvbsやPowerShell、Perlとか別のスクリプトに行ったほうがいい
バッチだと"&"や"%"とかダメ文字があるし凝った事をやろうとするといずれ行き詰まる
急がば回れ
"で""を囲えないしfindstrの正規表現で|は使えない
findstr /?
まともな正規表現を使いたければvbsやPowerShell、Perlとか別のスクリプトに行ったほうがいい
バッチだと"&"や"%"とかダメ文字があるし凝った事をやろうとするといずれ行き詰まる
急がば回れ
228デフォルトの名無しさん
2017/10/17(火) 22:45:54.56ID:bWF1v8hX 参考にWSHでもどうぞ(hoge.jsファイルとして作成)、コマンドプロンプトから
hoge "フォルダ名" (又は cscript //nologo hoge.js "フォルダ名")
又は、エクスプローラ等からフォルダをこのjsファイル(又はショートカット)にドロップして実行
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
if(args.length<1) throw Error("引数にフォルダを指定してください");
if(!fso.FolderExists(args(0))) throw Error("指定のフォルダが存在しません");
var folder = fso.GetFolder(args(0)), s = "", success = [], fail = [], name, name2, em, i, r;
var re = /^(\d{1,2})月(\d{1,2})日(.*)$/;
var func_new_name = function(all,mm,dd,ss) {
if(mm<1 || mm>12 || dd<1 || dd>31) return "";
return ("0"+mm).substr(mm.length-1) + ("0"+dd).substr(dd.length-1) + ss;
};
em = new Enumerator(folder.SubFolders);
for(em.moveFirst();!em.atEnd();em.moveNext()) {
name = em.item().Name;
if(re.test(name)) {
name2 = name.replace(re,func_new_name);
if(name2) {
try{em.item().Name = name2; success.push(" "+name+" -> "+name2);}
catch(e) {fail.push(" "+name+" -> "+name2);}
}
}
}
if(success.length>0) s = "リネーム成功\n"+success.join("\n");
if(fail.length>0) s += "\nリネーム失敗\n"+fail.join("\n");
WScript.Echo(s || "対象フォルダなし");
hoge "フォルダ名" (又は cscript //nologo hoge.js "フォルダ名")
又は、エクスプローラ等からフォルダをこのjsファイル(又はショートカット)にドロップして実行
var fso = new ActiveXObject("Scripting.FileSystemObject");
var args = WScript.Arguments;
if(args.length<1) throw Error("引数にフォルダを指定してください");
if(!fso.FolderExists(args(0))) throw Error("指定のフォルダが存在しません");
var folder = fso.GetFolder(args(0)), s = "", success = [], fail = [], name, name2, em, i, r;
var re = /^(\d{1,2})月(\d{1,2})日(.*)$/;
var func_new_name = function(all,mm,dd,ss) {
if(mm<1 || mm>12 || dd<1 || dd>31) return "";
return ("0"+mm).substr(mm.length-1) + ("0"+dd).substr(dd.length-1) + ss;
};
em = new Enumerator(folder.SubFolders);
for(em.moveFirst();!em.atEnd();em.moveNext()) {
name = em.item().Name;
if(re.test(name)) {
name2 = name.replace(re,func_new_name);
if(name2) {
try{em.item().Name = name2; success.push(" "+name+" -> "+name2);}
catch(e) {fail.push(" "+name+" -> "+name2);}
}
}
}
if(success.length>0) s = "リネーム成功\n"+success.join("\n");
if(fail.length>0) s += "\nリネーム失敗\n"+fail.join("\n");
WScript.Echo(s || "対象フォルダなし");
229デフォルトの名無しさん
2017/10/17(火) 23:49:36.84ID:G9wCIPXR もうPowerShellのRename-Item使おうぜ
個人用途だろうし制約ないでしょ
個人用途だろうし制約ないでしょ
230デフォルトの名無しさん
2017/10/18(水) 02:49:24.30ID:nuzaMfIv 覚えたてによく居るよね
要件無視した勝手な仕様でエラー判定とか結果ダイアログとかゴテゴテ実装してドヤ顔で持ってきちゃう子
要件無視した勝手な仕様でエラー判定とか結果ダイアログとかゴテゴテ実装してドヤ顔で持ってきちゃう子
231デフォルトの名無しさん
2017/10/18(水) 02:57:26.06ID:O0s7d+Fx まあダブルクリックで不意に実行されちゃうようなのは作りたくないよな
232デフォルトの名無しさん
2017/10/18(水) 07:04:24.46ID:G1+K6kx+ >>215 無理やりバッチファイルの例
for /d %%i in (*) do set "a=%%~nxi" & call :w
goto :eof
:w
setlocal enabledelayedexpansion
set "e=m" & set /a b=0,m=0,d=0
:x
set "c=!a:~%b%,1!"
if not defined c goto :eof
for /L %%j in (0,1,9) do if "!c!"=="%%j" set /a !e!=!e!*10+c & goto y
if not "!c!"=="月" goto z
if not "!e!"=="m" goto :eof
if !m! gtr 12 goto :eof
set "e=d"
:y
set /a b+=1 & goto x
:z
if not "!c!"=="日" goto :eof
if not "!e!"=="d" goto :eof
if !d! gtr 31 goto :eof
set /a f=m*d,m+=100,d+=100,b+=1
if !f! gtr 0 ren "!a!" "!m:~1!!d:~1!!a:~%b%!"
for /d %%i in (*) do set "a=%%~nxi" & call :w
goto :eof
:w
setlocal enabledelayedexpansion
set "e=m" & set /a b=0,m=0,d=0
:x
set "c=!a:~%b%,1!"
if not defined c goto :eof
for /L %%j in (0,1,9) do if "!c!"=="%%j" set /a !e!=!e!*10+c & goto y
if not "!c!"=="月" goto z
if not "!e!"=="m" goto :eof
if !m! gtr 12 goto :eof
set "e=d"
:y
set /a b+=1 & goto x
:z
if not "!c!"=="日" goto :eof
if not "!e!"=="d" goto :eof
if !d! gtr 31 goto :eof
set /a f=m*d,m+=100,d+=100,b+=1
if !f! gtr 0 ren "!a!" "!m:~1!!d:~1!!a:~%b%!"
233デフォルトの名無しさん
2017/10/18(水) 22:17:20.50ID:on6I0HDV >>231
うちの現場のバッチは例え内部で使わなかろうが最低1つは必ず引数を渡す仕様になってる。
そしてそれが渡されなかった場合は処理せずに終了する作りになっている。
理由は誤ってダブクリしちゃった場合の対策なんだってさ。
うちの現場のバッチは例え内部で使わなかろうが最低1つは必ず引数を渡す仕様になってる。
そしてそれが渡されなかった場合は処理せずに終了する作りになっている。
理由は誤ってダブクリしちゃった場合の対策なんだってさ。
234デフォルトの名無しさん
2017/10/18(水) 22:23:22.61ID:hY2xT5yc batって大体はD&Dして使うようなの書いてるな
235デフォルトの名無しさん
2017/10/19(木) 01:03:03.64ID:cgLUQcTs >>230
なんか癇に障ったみたいだけど、言い訳すると
俺は、質問者によって回答内容を変えてる
今回の質問者は初心者だと感じたし、さらには細かい拘りを持っているように見受けられた
(13月32日なんて作らないだろうし、もしあったって1332に変換されて悪いことはないと思う)
色々と手を加えて試行錯誤することが好きなんだろうなって思ったから
役に立ちそうな追加部分を記述した
それに1レスで書く分には、数行増えようが関係ないだろうと思ったしね
なんか癇に障ったみたいだけど、言い訳すると
俺は、質問者によって回答内容を変えてる
今回の質問者は初心者だと感じたし、さらには細かい拘りを持っているように見受けられた
(13月32日なんて作らないだろうし、もしあったって1332に変換されて悪いことはないと思う)
色々と手を加えて試行錯誤することが好きなんだろうなって思ったから
役に立ちそうな追加部分を記述した
それに1レスで書く分には、数行増えようが関係ないだろうと思ったしね
236デフォルトの名無しさん
2017/10/19(木) 08:32:22.21ID:ny4cf+Vz >>233
なるほど
なるほど
237デフォルトの名無しさん
2017/10/19(木) 22:12:55.60ID:JROgBEvY ザ・ワールド、時よ止まれ。
238デフォルトの名無しさん
2017/10/20(金) 03:00:35.66ID:1Na2h1P4 キッティングの自動化をしたいんだが、参考になるサイトない?
239デフォルトの名無しさん
2017/10/20(金) 03:00:59.71ID:1Na2h1P4 対象のレジストリ見つけるとかめんどい
240デフォルトの名無しさん
2017/10/20(金) 23:41:00.84ID:aZN6SiIl どの程度の自動化?
241デフォルトの名無しさん
2017/10/21(土) 08:56:40.19ID:Nsvn2WYb >>238
何を自動化するん?
何を自動化するん?
242デフォルトの名無しさん
2017/10/21(土) 16:42:48.10ID:DofUW9OG そんなんツールが出てるんだからその説明でも読めよ
243デフォルトの名無しさん
2017/10/21(土) 18:43:14.12ID:TBS9tbdH 一発で、ファイアウォールの受信規則とかインターネットオプションとか
244名無しさん@そうだ選挙に行こう! Go to vote!
2017/10/22(日) 07:51:26.89ID:eb/3UN8i >>215
$before = ls -Directory | Where-Object { $_ -match "^\d+月\d+日" }
$after = $before | foreach { $_.Name -replace '^(\d+)月(\d+)日', '$1$2' }
$idx = 0;
$before | foreach {
Rename-Item -WhatIf $_.FullName $after[$idx];
$idx++;
}
PowerShell で書いたので、cd で、そのフォルダへ移動して実行して。
-WhatIf が付いているので、本当には実行せずに、結果だけを見れる。
本当に実行する際は、-WhatIf を削除して実行して
配列 $before には「02月03日」などで始まるフォルダだけを、入れる。
配列 $after には「02月03日」の部分だけを「0203」に変換した、フォルダ名を入れる
Rename-Item で、該当する全フォルダ名を変換する
$before = ls -Directory | Where-Object { $_ -match "^\d+月\d+日" }
$after = $before | foreach { $_.Name -replace '^(\d+)月(\d+)日', '$1$2' }
$idx = 0;
$before | foreach {
Rename-Item -WhatIf $_.FullName $after[$idx];
$idx++;
}
PowerShell で書いたので、cd で、そのフォルダへ移動して実行して。
-WhatIf が付いているので、本当には実行せずに、結果だけを見れる。
本当に実行する際は、-WhatIf を削除して実行して
配列 $before には「02月03日」などで始まるフォルダだけを、入れる。
配列 $after には「02月03日」の部分だけを「0203」に変換した、フォルダ名を入れる
Rename-Item で、該当する全フォルダ名を変換する
2017/10/22(日) 14:53:59.01ID:1YRZU7Jo
問題は、月を01〜12まで、日を01〜31までのチェックを入れることだけどね
2017/10/22(日) 16:29:48.93ID:rLFHcAK9
>>244
ls <directory-name> -directory | ren -newname {$_.name -replace '^(¥d+)月(¥d+)日', '$1$2' }
lsの-filterやwhere-object使ってもいいけど
この例の場合は不要だと思うよ
ls <directory-name> -directory | ren -newname {$_.name -replace '^(¥d+)月(¥d+)日', '$1$2' }
lsの-filterやwhere-object使ってもいいけど
この例の場合は不要だと思うよ
247デフォルトの名無しさん
2017/10/23(月) 07:20:31.59ID:A3jhOkfm ls -directory | ren -WhatIf -newname {$_.name -replace '^(\d+)月(\d+)日', '$1$2' }
上記で、where-object が無いと、
変更されないフォルダまで、表示されるのが気持ち悪い
上記で、where-object が無いと、
変更されないフォルダまで、表示されるのが気持ち悪い
248デフォルトの名無しさん
2017/10/23(月) 22:30:10.89ID:TV21zs/8 Windows7SP1では、Get-ChildItemに-directoryオプションは無いんでエラーが表示された
調べたら、3.0以降でこのオプションが付いた模様
この際なので、5.0,5.1をインストールした
Windows7の人の参考まで
調べたら、3.0以降でこのオプションが付いた模様
この際なので、5.0,5.1をインストールした
Windows7の人の参考まで
249デフォルトの名無しさん
2017/10/24(火) 18:41:12.61ID:QQrV41zo PowerShellのスクリプトファイルの拡張子は普通.ps1を使うが
デフォルトではファイルの実行を許可してないし、
また許可後もダイレクトにファイル名を指定しても実行できない
って保険かけすぎで入門者には敷居が高いだろと思わないでもないなあ
>>247
where-objectを入れてみた
(まだ2時間ぐらいしかやってないんでもっといい書き方があるかも)
$re='^(\d+)月(\d+)日';ls -directory|? name -match $re|ren -whatif -newname {$_.name -replace $re,'$1$2'}
このスレ的にはアリアス使うなら、lsよりもdirが合ってる気もするけど
デフォルトではファイルの実行を許可してないし、
また許可後もダイレクトにファイル名を指定しても実行できない
って保険かけすぎで入門者には敷居が高いだろと思わないでもないなあ
>>247
where-objectを入れてみた
(まだ2時間ぐらいしかやってないんでもっといい書き方があるかも)
$re='^(\d+)月(\d+)日';ls -directory|? name -match $re|ren -whatif -newname {$_.name -replace $re,'$1$2'}
このスレ的にはアリアス使うなら、lsよりもdirが合ってる気もするけど
250デフォルトの名無しさん
2017/11/03(金) 20:22:18.43ID:+gpl8JNW ここで聞くべきか迷ったのですが…
自分のマシンからリモートデスクトップで接続できるサーバー(確かWin2008R2)があって
そのサーバーと同じネットワーク内にクライアント端末(Win7)があります。
そのクライアント端末のプロセスをリモートデスクトップで接続したサーバーから確認することは可能でしょうか?
(サーバーには管理者権限で接続しています)
要はクライアント端末でtasklistコマンドを打った結果が見たいのですが。
ちなみにクライアント端末はDHCP設定なので起動のたびにIPアドレスが変わります…
今は1日に何度も遠くにあるクライアント端末まで行ってプロセスを確認しています。
1回だけ行ってIPアドレスをメモるぐらいなら全然構わないので何か方法があれば教えて下さい。
自分のマシンからリモートデスクトップで接続できるサーバー(確かWin2008R2)があって
そのサーバーと同じネットワーク内にクライアント端末(Win7)があります。
そのクライアント端末のプロセスをリモートデスクトップで接続したサーバーから確認することは可能でしょうか?
(サーバーには管理者権限で接続しています)
要はクライアント端末でtasklistコマンドを打った結果が見たいのですが。
ちなみにクライアント端末はDHCP設定なので起動のたびにIPアドレスが変わります…
今は1日に何度も遠くにあるクライアント端末まで行ってプロセスを確認しています。
1回だけ行ってIPアドレスをメモるぐらいなら全然構わないので何か方法があれば教えて下さい。
251デフォルトの名無しさん
2017/11/03(金) 21:42:45.24ID:91m0YuAi クライアントに自分のタスクリストをファイルを記録する周期ジョブを作成しておく
必要であれば暗号化しておく
そのファイルをメールで自動送付するようにしておくか、
クライアントにwebエリアがあればそこに置きこちらから見にいく
必要であれば暗号化しておく
そのファイルをメールで自動送付するようにしておくか、
クライアントにwebエリアがあればそこに置きこちらから見にいく
252デフォルトの名無しさん
2017/11/03(金) 21:52:08.46ID:z1gogpom253デフォルトの名無しさん
2017/11/03(金) 22:47:57.34ID:+QQUmgGP >>250
1) 他のPCのプロセス状態を知りたい
2) DHCPで設定されているPCのIPアドレスを知りたい
ってことでいいかな
1) はtasklist の /s オプションで知りたいPCのIPアドレスを指定すれば行けるはず
ただし事前にPC側に設定が必要
かつPCにログインできる情報が必要
2) は
2-1) 直接見に行ってipconfigで確認する
2-2) MACアドレスわかってるならサーバーからそのネットワークアドレス全体にpingを打ちつつarpコマンドで相手のMACアドレス確認していけばいい
2-3) DHCPサーバーを管理してるならPCのIPアドレスを確認する方法があるかも、まあそれならPCのIPアドレスを固定した方がいいかも
2-4) >>251みたいな方法で定期的にIPアドレスを通知してもらう
1) 他のPCのプロセス状態を知りたい
2) DHCPで設定されているPCのIPアドレスを知りたい
ってことでいいかな
1) はtasklist の /s オプションで知りたいPCのIPアドレスを指定すれば行けるはず
ただし事前にPC側に設定が必要
かつPCにログインできる情報が必要
2) は
2-1) 直接見に行ってipconfigで確認する
2-2) MACアドレスわかってるならサーバーからそのネットワークアドレス全体にpingを打ちつつarpコマンドで相手のMACアドレス確認していけばいい
2-3) DHCPサーバーを管理してるならPCのIPアドレスを確認する方法があるかも、まあそれならPCのIPアドレスを固定した方がいいかも
2-4) >>251みたいな方法で定期的にIPアドレスを通知してもらう
254250
2017/11/04(土) 18:18:26.62ID:HSP2f8JH みなさん情報ありがとうございます。
来週になったらとりあえず>>252さんの方法を試してみます。(一番手軽なので…汗)
それでダメな場合は一日一回直接IPアドレスを確認しにいく方式にします。
というのもpingのブロードキャストは現場のルールで禁止されてるっぽいので。
クライアント端末も特別な用途のためのものなのでタスク作ったり何かを仕掛けるのは厳しそうです。
仕掛けられれば業務はすごく楽になるんですけど「セキュリティ上問題が…」とか言われて突っぱねられる可能性大です。><
尚、pingブロードキャスト以外の方法でIPを知る方法については自分でも調べてみます。
どうもありがとうございます。助かりました!
来週になったらとりあえず>>252さんの方法を試してみます。(一番手軽なので…汗)
それでダメな場合は一日一回直接IPアドレスを確認しにいく方式にします。
というのもpingのブロードキャストは現場のルールで禁止されてるっぽいので。
クライアント端末も特別な用途のためのものなのでタスク作ったり何かを仕掛けるのは厳しそうです。
仕掛けられれば業務はすごく楽になるんですけど「セキュリティ上問題が…」とか言われて突っぱねられる可能性大です。><
尚、pingブロードキャスト以外の方法でIPを知る方法については自分でも調べてみます。
どうもありがとうございます。助かりました!
255デフォルトの名無しさん
2017/11/04(土) 18:30:41.27ID:sTeHaJ1X256デフォルトの名無しさん
2017/11/05(日) 10:20:45.02ID:rFS24mxQ set infilenm=001.txt
set outfilenm=002.txt
set beforestr=""""
set afterstr=""
type nul >%outfilenm%
setlocal enabledelayedexpansion
for /f "delims=" %%A in (%infilenm%) do (
set line=%%A
echo !line:%beforestr%=%afterstr%!>>%outfilenm%
)
endlocal
001.txtからダブルクォーテーションを削除して002.txtに保存したいだけなんですが、
3行目と4行目の表記がわからず、考えられる限り書き直して、うまくいきません。
あるいは別のBATでもいいのですが教えてください。
set outfilenm=002.txt
set beforestr=""""
set afterstr=""
type nul >%outfilenm%
setlocal enabledelayedexpansion
for /f "delims=" %%A in (%infilenm%) do (
set line=%%A
echo !line:%beforestr%=%afterstr%!>>%outfilenm%
)
endlocal
001.txtからダブルクォーテーションを削除して002.txtに保存したいだけなんですが、
3行目と4行目の表記がわからず、考えられる限り書き直して、うまくいきません。
あるいは別のBATでもいいのですが教えてください。
257デフォルトの名無しさん
2017/11/05(日) 11:42:01.62ID:vm51NJQ8258デフォルトの名無しさん
2017/11/05(日) 11:56:26.30ID:vm51NJQ8 ただ001.txtのデータ次第でうまくいかない場合があるんで
別のスクリプト言語(PowerShellやWSH等)で書いたほうがいい
別のスクリプト言語(PowerShellやWSH等)で書いたほうがいい
259256
2017/11/05(日) 12:18:29.39ID:rFS24mxQ260デフォルトの名無しさん
2017/11/05(日) 13:20:27.79ID:vm51NJQ8261デフォルトの名無しさん
2017/11/05(日) 13:40:33.57ID:rFS24mxQ >>260
ご心配ありがとうございます。
大丈夫です。ものは、<a href とかのhtmlタグで作成したリンクリストで、
正規表現とかエスケープっぽい記号等はなく、
そもそもプライベートファイルなので、これで素早くリストができて万々歳です。
ご心配ありがとうございます。
大丈夫です。ものは、<a href とかのhtmlタグで作成したリンクリストで、
正規表現とかエスケープっぽい記号等はなく、
そもそもプライベートファイルなので、これで素早くリストができて万々歳です。
262デフォルトの名無しさん
2017/11/06(月) 15:18:34.73ID:K1roLwuw263デフォルトの名無しさん
2017/11/06(月) 15:59:22.60ID:K1roLwuw 半角スペースだけの行は化けるな
264デフォルトの名無しさん
2017/11/06(月) 19:12:27.47ID:Mdq5cGE3 echo,とか、echo;とかで
265デフォルトの名無しさん
2017/11/06(月) 23:15:25.56ID:RrRem/45 バッチファイルに渡された引数が1つなのか2つなのかを判定したいのですが
どのように記述すれば良いのでしょうか?
以下ではダメでした。
if defined %2 echo 引数は2つです else echo 引数は1つです
どのように記述すれば良いのでしょうか?
以下ではダメでした。
if defined %2 echo 引数は2つです else echo 引数は1つです
266デフォルトの名無しさん
2017/11/07(火) 01:14:40.14ID:xsgE2wk0 if not '%2=='
267デフォルトの名無しさん
2017/11/07(火) 07:09:27.79ID:4pg/kk0r >>264 ありがとう
for /f "delims=" %%i in (001.txt) do (
set "a=%%i"
setlocal enabledelayedexpansion
set "a=!a:"=!"
echo.!a!>>002.txt
endlocal
)
これで空行以外は完璧かな?
for /f "delims=" %%i in (001.txt) do (
set "a=%%i"
setlocal enabledelayedexpansion
set "a=!a:"=!"
echo.!a!>>002.txt
endlocal
)
これで空行以外は完璧かな?
268デフォルトの名無しさん
2017/11/07(火) 10:05:04.55ID:1287flJj >>262の奴で
"echo "を"echo."にするとダメなのに"echo,"にするとOKなのは何故なんだぜ?
今まで、ピリオドとカンマ、セミコロンに違いがあるとは思ってなかったから
ずっとピリオド使ってたのに
"echo "を"echo."にするとダメなのに"echo,"にするとOKなのは何故なんだぜ?
今まで、ピリオドとカンマ、セミコロンに違いがあるとは思ってなかったから
ずっとピリオド使ってたのに
269デフォルトの名無しさん
2017/11/07(火) 22:51:26.28ID:4pg/kk0r270デフォルトの名無しさん
2017/11/08(水) 00:22:28.07ID:X1Aytah6 for /f delims^=^ eol^=
272デフォルトの名無しさん
2017/11/08(水) 19:40:30.74ID:VTzaN0jn >>268
「,」「;」「=」は特別区切り文字だから。
例えば、C:\直下に「a」ってフォルダ作って
「b.cmd」
for /f %%a in ('echo,b') do echo,%%a
「b b.cmd」
echo;c %1
pause
のバッチ作成して、コマンドプロンプトで「C:\a」に移動してから
「b.cmd」を実行すると、()の中の「,」が消えた状態で表示される
「b b.cmd」を実行すると、「b.cmd」が実行される
「"b b.cmd"」を実行すると、「b b.cmd」が実行される
今度はファイル名を指定して実行で
cmd /c "C:\a\b b.cmd"
cmd /c "C:\a\b b.cmd" dを実行すると、pauseで止まるけど
cmd /c "C:\a\b b.cmd" "d"を実行すると、一瞬で終わる
cmd /c,"C:\a\b b.cmd" "d"なら動く
結構知られていないんだよね。
「,」「;」「=」は特別区切り文字だから。
例えば、C:\直下に「a」ってフォルダ作って
「b.cmd」
for /f %%a in ('echo,b') do echo,%%a
「b b.cmd」
echo;c %1
pause
のバッチ作成して、コマンドプロンプトで「C:\a」に移動してから
「b.cmd」を実行すると、()の中の「,」が消えた状態で表示される
「b b.cmd」を実行すると、「b.cmd」が実行される
「"b b.cmd"」を実行すると、「b b.cmd」が実行される
今度はファイル名を指定して実行で
cmd /c "C:\a\b b.cmd"
cmd /c "C:\a\b b.cmd" dを実行すると、pauseで止まるけど
cmd /c "C:\a\b b.cmd" "d"を実行すると、一瞬で終わる
cmd /c,"C:\a\b b.cmd" "d"なら動く
結構知られていないんだよね。
273デフォルトの名無しさん
2017/11/08(水) 22:40:59.50ID:ZHWfUJ7q >>270 ありがとう。完全に動作しました
そもそも eol の既定値が ; だとかヘルプに書いてないぞ
ちなみに "eol=" とすると eol が空になるのかと思ったら
今度は行頭に " があると読み飛ばすようです
何なんだ、これは。for 文のバグですかね
そもそも eol の既定値が ; だとかヘルプに書いてないぞ
ちなみに "eol=" とすると eol が空になるのかと思ったら
今度は行頭に " があると読み飛ばすようです
何なんだ、これは。for 文のバグですかね
274デフォルトの名無しさん
2017/11/09(木) 12:26:56.09ID:NEfZ8eBs @echo off
prompt $g
set a=/?
set b=exe
set c= off
echo on
echo,%a%
echo;%a%
echo.%a%
echo.%b%
echo.%c%
echo
pause
prompt $g
set a=/?
set b=exe
set c= off
echo on
echo,%a%
echo;%a%
echo.%a%
echo.%b%
echo.%c%
echo
pause
275デフォルトの名無しさん
2017/11/10(金) 12:50:53.03ID:5BeFn7Xg 一時的なwindows資格情報の付与
付与→(再起動)→ポップアップを閉じるまで作業→(再起動)
の流れをバッチ実行一発で済ませたいと思ってる。
(○.bat)
cmdkey 書き込み
copy **.batを配置
schtasks 再起動後のタスク登録(**.bat実行)
shutdown 再起動
↓ (ログイン)
(**.bat)
echoでmsgbox表示(閉じるまで待つ)
cmdkey /delete ←ここで資格情報が消えない
schtasks /Delete タスク消去
del /f "%~dp0 自己消去
タスクは一応highest
タスク実行だとcmdkey通らないとかある?
bat素人で何が原因で消えないのかわからない・・・
ポップアップ表示中にcmd開いてcmdkey打つとちゃんと消える
付与→(再起動)→ポップアップを閉じるまで作業→(再起動)
の流れをバッチ実行一発で済ませたいと思ってる。
(○.bat)
cmdkey 書き込み
copy **.batを配置
schtasks 再起動後のタスク登録(**.bat実行)
shutdown 再起動
↓ (ログイン)
(**.bat)
echoでmsgbox表示(閉じるまで待つ)
cmdkey /delete ←ここで資格情報が消えない
schtasks /Delete タスク消去
del /f "%~dp0 自己消去
タスクは一応highest
タスク実行だとcmdkey通らないとかある?
bat素人で何が原因で消えないのかわからない・・・
ポップアップ表示中にcmd開いてcmdkey打つとちゃんと消える
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… ★6 [BFU★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」★2 [ぐれ★]
- 【速報】 日経平均の下落率3%超す、財政懸念で長期金利上昇 [お断り★]
- ナイツ塙が指摘のローソンコーヒーカップ、ロゴ「L」で誤解生みデザイン変更へ 在庫使い切る3か月後にリニューアル [muffin★]
- 【速報】 高市政権、「日本版DOGE」を立ち上げ 米国で歳出削減をした「政府効率化省(DOGE)」になぞらえたもの [お断り★]
- 清涼飲料水から麻薬成分東京都が注意喚起 [おっさん友の会★]
- 【悲報】早速高市首相のせいで全国の民泊でキャンセルラッシュwwwwwwwwwwww 経営者も嘆き「こんな事は初めてだ…」😲 [871926377]
- 中国「高市が謝罪撤回しないとこれ全部なくなるけどどうする?」 [931948549]
- んなっしょい🍬禁止🈲のお🏡
- 【動画】男女混合レスリングのガチ試合の様子がこちら [738130642]
- 【悲報】ネトウヨが大田實中将の「沖縄県民斯く戦えり」って訣別電出しながら昔の沖縄県民は立派だったって嘆いてた😰 [616817505]
- 【日刊】暇空茜、また敗訴🥸 [359965264]
