拡張子が .cmd または .bat のバッチファイルのスクリプティング(プログラミング)に関わる
質問,テクニック(JScript,Perl等の埋め込みなど含む),関連情報のためのスレです。
※何でも無理矢理バッチでやろうとせず、WSH等の使用も検討しましょう。
前スレ
【.cmd】 バッチファイルスクリプト %11 【.bat】©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1424858999/
【.cmd】 バッチファイルスクリプト %12 【.bat】
https://mevius.5ch.net/test/read.cgi/tech/1489207631/
それ以前の過去スレ
%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】 バッチファイルスクリプト %13 【.bat】
レス数が1000を超えています。これ以上書き込みはできません。
2018/11/21(水) 14:52:07.84ID:v84I4o+L
948デフォルトの名無しさん
2020/08/02(日) 00:01:49.63ID:SCuZm8dn >エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
949デフォルトの名無しさん
2020/08/02(日) 00:12:10.36ID:SCuZm8dn > setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
951デフォルトの名無しさん
2020/08/07(金) 17:37:19.06ID:ztGuRGFM フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです
これを
フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2
こうしたいです
ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2
フォルダ名が重複した場合の処理も必要かもしれないです
バッチは読みにくすぎですね
これを
フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2
こうしたいです
ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2
フォルダ名が重複した場合の処理も必要かもしれないです
バッチは読みにくすぎですね
952デフォルトの名無しさん
2020/08/07(金) 22:11:16.88ID:wnzPeWR5 >>951
そもそもツリー表現が変だと思う。
├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
├ファイル1
└ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
そもそもツリー表現が変だと思う。
├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
├ファイル1
└ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
953デフォルトの名無しさん
2020/08/07(金) 22:17:23.17ID:5wWI/sIC954デフォルトの名無しさん
2020/08/08(土) 00:00:00.04ID:c43C7xo+ for /r %%i in (.)で下位フォルダ名取得
そのフォルダ内の最初のファイル名を取得(ソート指定)
対象フォルダ名の変更
もしやるならvbs噛ませると思う
そのフォルダ内の最初のファイル名を取得(ソート指定)
対象フォルダ名の変更
もしやるならvbs噛ませると思う
955デフォルトの名無しさん
2020/08/08(土) 05:43:20.34ID:jNP2OM4q >>953
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
956デフォルトの名無しさん
2020/08/08(土) 08:06:33.19ID:ulitZ7VR >>955
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
https://support.microsoft.com/ja-jp/help/319827/the-sort-order-for-files-and-folders-whose-names-contain-numerals-is-d
957デフォルトの名無しさん
2020/08/08(土) 08:25:04.94ID:HPaGwZBp どうでも良いことに拘るアホ
958デフォルトの名無しさん
2020/08/08(土) 09:01:08.32ID:nLoi7MqI どうでもいいと言うならテメーがどっちかに決めろや
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
959デフォルトの名無しさん
2020/08/08(土) 09:25:59.89ID:XY4Xe7zO ところで、質問者本人は、どちらを・・・・。
960デフォルトの名無しさん
2020/08/08(土) 09:32:21.16ID:d2hZRkL/ 仕様を全て決めないと取り掛かれないマヌケ多すぎ
無能は本筋から外れたところで発狂してろ
無能は本筋から外れたところで発狂してろ
961デフォルトの名無しさん
2020/08/08(土) 09:59:17.57ID:jNP2OM4q >>956
では今回はエクスプローラ側の並び順がいいです
では今回はエクスプローラ側の並び順がいいです
962デフォルトの名無しさん
2020/08/08(土) 10:22:17.59ID:cJmgrNkw963デフォルトの名無しさん
2020/08/08(土) 11:11:14.30ID:6XUmF/b8 とりあえずこんな感じ?(先頭はdir順)
if "%1" neq "" pushd "%~1"
for /d %%i in (*) do call :sub "%%~i"
popd
goto :eof
:sub
for /f "tokens=*" %%j in ('dir /b /on %1') do (
call :rename %1 "%%~j"
goto :eof
)
goto :eof
:rename
ren %1 %2
if errorlevel 0 call :rename-retry %1 %2
goto :eof
:rename-retry
rem ---todo---
goto :eof
if "%1" neq "" pushd "%~1"
for /d %%i in (*) do call :sub "%%~i"
popd
goto :eof
:sub
for /f "tokens=*" %%j in ('dir /b /on %1') do (
call :rename %1 "%%~j"
goto :eof
)
goto :eof
:rename
ren %1 %2
if errorlevel 0 call :rename-retry %1 %2
goto :eof
:rename-retry
rem ---todo---
goto :eof
964デフォルトの名無しさん
2020/08/08(土) 11:14:22.00ID:jNP2OM4q965デフォルトの名無しさん
2020/08/08(土) 12:00:51.68ID:jNP2OM4q globでやってみます
966デフォルトの名無しさん
2020/08/08(土) 12:16:11.89ID:XwBZfJ1v リネーム処理とかはもうPSの方がいいんじゃない?
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%G in ('dir /ad /b') do (
set N=
for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH"
if defined N (
if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else (
set dt=!date:~0,10!!time: =0!
set dt=!dt:/=!
set dt=!dt::=!
ren "%%~G" "!N!_!dt!"
)
)
)
pause &exit /b
@echo off &setlocal enabledelayedexpansion
for /f "delims=" %%G in ('dir /ad /b') do (
set N=
for /f "usebackq delims=" %%H in (`dir /a-d /b "%%~G" 2^>nul`) do if not "%%~H"=="" if not defined N set "N=%%~nH"
if defined N (
if not exist "%%~dpG!N!" (ren "%%~G" "!N!") else (
set dt=!date:~0,10!!time: =0!
set dt=!dt:/=!
set dt=!dt::=!
ren "%%~G" "!N!_!dt!"
)
)
)
pause &exit /b
967デフォルトの名無しさん
2020/08/08(土) 14:01:14.15ID:jNP2OM4q pythonでは向いてないですか
968デフォルトの名無しさん
2020/08/08(土) 15:20:59.87ID:IdUt1ux3 pythonはスレチ
969デフォルトの名無しさん
2020/08/08(土) 15:22:12.94ID:0U8ymD0p >>967
ならPythonスレで聞けよ…
ならPythonスレで聞けよ…
970デフォルトの名無しさん
2020/08/08(土) 16:11:06.79ID:Uh3gedSc dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから
wshでリネーム用のバッチファイルを作る方が楽かな
wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい
wshでリネーム用のバッチファイルを作る方が楽かな
wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい
971デフォルトの名無しさん
2020/08/09(日) 04:55:36.88ID:z2n3MQIn 仕様がないと取りかかれないと言うが
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ
972デフォルトの名無しさん
2020/08/09(日) 05:42:25.80ID:KFfdng53 Ruby で、チェックツールを作った
隠しファイル・ディレクトリは、どう扱うのか?
ファイル名に、. がある場合に、どうするのか?
require 'pathname'
p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" )
folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ
p folders.length, folders
files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ
# nil は、直下にファイルが存在しない、ディレクトリ
nil_cnt = files.count( &:nil? )
p files.length, nil_cnt, files
# compact で、nil の要素を省く
hash = files.compact.each_with_object( { } ) do |file, hash|
filename = file.basename.to_s # ファイル名を、ハッシュに追加していく
if hash.has_key? filename # ハッシュに、既に追加されていれば
hash[ filename ] += 1
else
hash[ filename ] = 1
end
end
# 2 以上のもの、つまり、同じファイル名になったものを表示する
p hash, hash.select { |key, val| val >= 2 }
隠しファイル・ディレクトリは、どう扱うのか?
ファイル名に、. がある場合に、どうするのか?
require 'pathname'
p base_dir = Pathname.new( "C:/Users/Owner/Documents/test/" )
folders = base_dir.children.select( &:directory? ) # 直下のディレクトリのみ
p folders.length, folders
files = folders.map { |folder| folder.children.select( &:file? ).first } # 直下の最初のファイルのみ
# nil は、直下にファイルが存在しない、ディレクトリ
nil_cnt = files.count( &:nil? )
p files.length, nil_cnt, files
# compact で、nil の要素を省く
hash = files.compact.each_with_object( { } ) do |file, hash|
filename = file.basename.to_s # ファイル名を、ハッシュに追加していく
if hash.has_key? filename # ハッシュに、既に追加されていれば
hash[ filename ] += 1
else
hash[ filename ] = 1
end
end
# 2 以上のもの、つまり、同じファイル名になったものを表示する
p hash, hash.select { |key, val| val >= 2 }
973デフォルトの名無しさん
2020/08/09(日) 06:16:13.05ID:wnSURbps そろそろ出てくるかと思ってた
974デフォルトの名無しさん
2020/08/09(日) 06:38:11.28ID:fObB6/0g 予測通り?
975デフォルトの名無しさん
2020/08/09(日) 08:51:35.00ID:AwQ8dIl5976デフォルトの名無しさん
2020/08/09(日) 16:47:47.63ID:0zxLTv88 典型的な無能の発言だな
977デフォルトの名無しさん
2020/08/09(日) 23:22:34.78ID:TBMXuXvF978デフォルトの名無しさん
2020/08/10(月) 01:55:02.34ID:9+h/1Osf979デフォルトの名無しさん
2020/08/10(月) 03:38:30.58ID:1F6bB0mG あいまいなのはユーザーが自分でも要求を把握しきっていないためだから
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
980デフォルトの名無しさん
2020/08/10(月) 04:21:21.96ID:mFEy/HZR > あいまいなのはユーザーが自分でも要求を把握しきっていないため
ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ
ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ
981デフォルトの名無しさん
2020/08/10(月) 11:53:14.80ID:ZLJuvAm6 ある程度ブレても、いいように開発できればいいのですけれどもね。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
982デフォルトの名無しさん
2020/08/10(月) 21:32:34.56ID:+SLQPb+P983デフォルトの名無しさん
2020/08/13(木) 21:47:50.59ID:5FyzI8Jm Soft\Soft.ini
12 LastCheck = Mon Aug 3 00:00:00 2020
13 LastUpdate = Mon Aug 3 00:00:00 2020
Soft\Plugins\update.txt
1 Update time: Wed Aug 12 23:59:59 2020
Soft.iniの12行目と13行目「Mon 〜 2020」を
update.txtの1行目「Wed 〜 2020」から置換して
12 LastCheck = Wed Aug 12 23:59:59 2020
13 LastUpdate = Wed Aug 12 23:59:59 2020
のように上書きしたいのですが
batファイルでどのように書けば出来ますか?
12 LastCheck = Mon Aug 3 00:00:00 2020
13 LastUpdate = Mon Aug 3 00:00:00 2020
Soft\Plugins\update.txt
1 Update time: Wed Aug 12 23:59:59 2020
Soft.iniの12行目と13行目「Mon 〜 2020」を
update.txtの1行目「Wed 〜 2020」から置換して
12 LastCheck = Wed Aug 12 23:59:59 2020
13 LastUpdate = Wed Aug 12 23:59:59 2020
のように上書きしたいのですが
batファイルでどのように書けば出来ますか?
984デフォルトの名無しさん
2020/08/13(木) 22:00:40.82ID:E452L2zK >>983
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…
985デフォルトの名無しさん
2020/08/14(金) 08:32:48.63ID:SCMnTycc Ruby では、これで設定できる
require 'inifile'
str = "Wed Aug 12 23:59:59 2020"
ini = IniFile.new( :filename => "test.ini" )
ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str }
ini.write( ) # save
結果
[abc]
LastCheck = Wed Aug 12 23:59:59 2020
LastUpdate = Wed Aug 12 23:59:59 2020
require 'inifile'
str = "Wed Aug 12 23:59:59 2020"
ini = IniFile.new( :filename => "test.ini" )
ini[ "abc" ] = { "LastCheck" => str, "LastUpdate" => str }
ini.write( ) # save
結果
[abc]
LastCheck = Wed Aug 12 23:59:59 2020
LastUpdate = Wed Aug 12 23:59:59 2020
986デフォルトの名無しさん
2020/08/14(金) 09:14:47.97ID:oJspCYOK イヤミでは、なく止したら? <Ruby
987デフォルトの名無しさん
2020/08/14(金) 09:32:16.73ID:cdtRNbgQ Swiss File Knife
988デフォルトの名無しさん
2020/08/14(金) 09:39:33.54ID:dCe/n24a ・
989デフォルトの名無しさん
2020/08/14(金) 14:59:12.49ID:uGqrrAzw >>983
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H"
for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H"
REM 比較するならここで処理
REM echo "%VER_UT%" "%VER_IT%"
ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b)
for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do (
if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT%
) else (
if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT%
) else ( >>"%ini%" echo %%G=%%H
)
)
)
REM 空行消したくなければ findstrで読んで行番号を表示させる
@echo off
set src=Plugins\update.txt
set ini=Soft.ini
for /f "usebackq tokens=1* delims=:" %%G in (`findstr /c:"Update time" "%src%"`) do set "VER_UT=%%H"
for /f "usebackq tokens=1* delims==" %%G in (`findstr /c:"LastUpdate" "%ini%"`) do set "VER_IT=%%H"
REM 比較するならここで処理
REM echo "%VER_UT%" "%VER_IT%"
ren "%ini%" "%ini%.bak" && copy nul "%ini%" || (echo ERROR &pause &exit /b)
for /f "usebackq tokens=1* delims==" %%G in ("%ini%.bak") do (
if "%%G"=="LastCheck " ( >>"%ini%" echo %%G=%VER_UT%
) else (
if "%%G"=="LastUpdate " ( >>"%ini%" echo %%G=%VER_UT%
) else ( >>"%ini%" echo %%G=%%H
)
)
)
REM 空行消したくなければ findstrで読んで行番号を表示させる
990デフォルトの名無しさん
2020/08/14(金) 21:06:33.51ID:II+YlR7/ ・
991デフォルトの名無しさん
2020/08/14(金) 22:02:35.58ID:TmzvbeJo992デフォルトの名無しさん
2020/08/14(金) 22:14:12.37ID:B6QaDwta 未来予知乙
生きてる価値もないなw
生きてる価値もないなw
993デフォルトの名無しさん
2020/08/14(金) 22:43:27.80ID:9FGl+Ien 低能Ruby厨か
994デフォルトの名無しさん
2020/08/14(金) 23:06:43.67ID:TmzvbeJo995デフォルトの名無しさん
2020/08/14(金) 23:10:45.52ID:SCMnTycc Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?
996デフォルトの名無しさん
2020/08/14(金) 23:35:08.04ID:LY+T9Pmp EDLIN
997デフォルトの名無しさん
2020/08/15(土) 00:03:00.44ID:fUIncIgN ・
998デフォルトの名無しさん
2020/08/15(土) 01:45:30.34ID:t8slxubu 次スレは?
999デフォルトの名無しさん
2020/08/15(土) 02:14:16.82ID:RWxrHj8y1000デフォルトの名無しさん
2020/08/15(土) 06:59:18.06ID:R7NunwzB 質問いいでしょうか
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 【文春】永野芽郁(25)&田中圭(40)燃え上がる不倫LINE ★21 [Ailuropoda melanoleuca★]
- 永野芽郁「一部報道にあるやり取りはしていない」所属事務所が「本人に確認」改めて「交際等の事実はない」★6 [muffin★]
- 【米】スーパーのコメ価格、4233円 17週連続値上がり 前年同期比で2145円高く ★2 [ぐれ★]
- 【栃木】全生徒が徹夜で歩く85キロ強歩→35キロに短縮 大田原高校の伝統行事、負担増で [ぐれ★]
- 【陰謀論】「ファクトチェック後進国」日本に変化の兆し 兵庫県知事選きっかけに全国の新聞社が始めた試み [ぐれ★]
- 【文春】田中圭と永野芽郁やりとりに「スクショはないの?」「信憑性が…」証拠となるはずのLINE画像が公開されない理由とは [muffin★]
- 【速報】週刊文春、捏造が確定、永野芽郁&田中圭の両者がLINEトーク報道を否定 [606757419]
- 【速報!!!】トランプ大統領、近く「地球を揺るがす」重大発表を予告 [483862913]
- ジークアクス、初めてロボに乗ったJKが一年戦争の猛者をぶっ殺す
- 【動画】中国、エチで天才的なゲームを開発してしまう… [306119931]
- モク爺😶‍🌫のもくもく木曜日🏡
- 【悲報】『ガンダムGQuuuuuuX』さん、少数のオタクしか見ておらないことが判明する…各配信サイトの順位が悲惨な結果に🥲 [562983582]