拡張子が .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】
レス数が950を超えています。1000を超えると書き込みができなくなります。
2018/11/21(水) 14:52:07.84ID:v84I4o+L
899デフォルトの名無しさん
2020/07/08(水) 05:13:48.40ID:H59ZusVp >>897
普通にcopy使えよ
普通にcopy使えよ
900デフォルトの名無しさん
2020/07/08(水) 05:29:09.34ID:plYM8yLW >>897
要件はそれだけか?
メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり
それはコピー対象/対象外だとか無いの?
\Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ
A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること
mkdir C\Users\a\Desktop\B\V\C
copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C
xcopyを使うなら
xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C
又は
xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
要件はそれだけか?
メッセージを表示しないだとか、\A\Cには他ファイルやサブフォルダがあり
それはコピー対象/対象外だとか無いの?
\Cは常に同じなら、事前にフォルダを作っておいて、あとは毎回copyだけを実行するだけ
A,B,Cが実際には半角空白を含んでいたりしたらパスは""で括ること
mkdir C\Users\a\Desktop\B\V\C
copy /y C\Users\a\Desktop\A\C\*.txt C:\Users\a\Desktop\B\V\C
xcopyを使うなら
xcopy /s/e/i/y C:\Users\a\Desktop\A\C C:\Users\a\Desktop\B\V\C
又は
xcopy /s/e/i/y C:\Users\a\Desktop\A C:\Users\a\Desktop\B\V
901デフォルトの名無しさん
2020/07/08(水) 05:44:34.05ID:lPT19RKJ902デフォルトの名無しさん
2020/07/08(水) 11:29:53.61ID:Z8A6jaoN xcopy よりは、robocopy を使った方が良いのでは?
xcopyは、あまり見ない
xcopyは、あまり見ない
903デフォルトの名無しさん
2020/07/08(水) 12:24:18.71ID:lp5P2pBO dosで使えなくなるだろ
904デフォルトの名無しさん
2020/07/08(水) 12:46:00.57ID:Lb+zauke たしかに、DOSは、Xcopyまでだったか。
pureDOSには、robocopyはないのだな。
pureDOSには、robocopyはないのだな。
905デフォルトの名無しさん
2020/07/08(水) 12:56:46.06ID:plYM8yLW robocopyは絶望的に遅い
複雑な条件がないのならxcopyがいい
複雑な条件がないのならxcopyがいい
906デフォルトの名無しさん
2020/07/08(水) 15:01:55.81ID:z330e5aM robocopyは、ミラーリングで使用したときに、
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。
907デフォルトの名無しさん
2020/07/08(水) 18:21:45.08ID:ebRsk5Wi ま?
908895
2020/07/08(水) 19:29:53.78ID:fFkGRU4d >>896
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ。
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
https://www.atmarkit.co.jp/ait/articles/2002/19/news006.html
だから丸っきり不要ってわけでもないのだよ。
909デフォルトの名無しさん
2020/07/09(木) 01:19:26.67ID:oG8bZA2s http://itomo.cocolog-nifty.com/itomolog/2011/06/windows-4df1.html
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している
910デフォルトの名無しさん
2020/07/09(木) 02:32:11.02ID:zMPqHoYq >>909
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?
911デフォルトの名無しさん
2020/07/09(木) 04:53:54.78ID:gEWbrPAM Ruby で作った。
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.txt"
num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする
.reverse # 更新時刻の新しい順へ、逆転
.drop( num ) # 新しいものから、num個を処理しない
.each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除
表示
rm C:/Users/Owner/Documents/a.txt
rm C:/Users/Owner/Documents/b.txt
ただし、DryRun なので実際には実行されません!
require 'fileutils'
# 絶対パスのディレクトリ名の後ろに、* を付けること!
# . で始まる、隠し directory, file を除く
glob_pattern = "C:/Users/Owner/Documents/*.txt"
num = 5 # 更新時刻の新しいものからの順で、フォルダに残しておくファイルの数
Dir.glob( glob_pattern )
.select { |full_path| File.file?( full_path ) } # ファイルのみ処理する
.sort_by { |full_path| File.mtime( full_path ) } # 更新時刻の古い順で、ソートする
.reverse # 更新時刻の新しい順へ、逆転
.drop( num ) # 新しいものから、num個を処理しない
.each { |full_path| FileUtils::DryRun.rm( full_path ) } # ファイルを削除
表示
rm C:/Users/Owner/Documents/a.txt
rm C:/Users/Owner/Documents/b.txt
912デフォルトの名無しさん
2020/07/09(木) 06:30:12.62ID:o2t2WZIU rubyなんて論外、PowerShellですらギリアウト
ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合
カレントフォルダの *.txt の最新3個以外をリストアップするには
gi *.txt | sort LastWriteTime -Descending | select -Skip 3
削除までやるなら
gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri
エイリアスを使わずに書くと
Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
ギリアウトだがPowerShellのコマンドラインで標準のエイリアスを使う場合
カレントフォルダの *.txt の最新3個以外をリストアップするには
gi *.txt | sort LastWriteTime -Descending | select -Skip 3
削除までやるなら
gi *.txt | sort LastWriteTime -Descending | select -Skip 3 | ri
エイリアスを使わずに書くと
Get-Item *.txt | Sort-Object LastAccessTime -Descending | Select-Object -Skip 3 | Remove-Item
913デフォルトの名無しさん
2020/07/09(木) 06:31:35.37ID:o2t2WZIU ああ LastAccessTimeじゃくてLastWriteTime
914デフォルトの名無しさん
2020/07/09(木) 13:30:39.43ID:oG8bZA2s >>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている事が原因でした
そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?
915デフォルトの名無しさん
2020/07/09(木) 16:17:08.38ID:t1UM8kjV >>914
ファイル名に相当する箇所をクオート
ファイル名に相当する箇所をクオート
916デフォルトの名無しさん
2020/07/15(水) 06:27:24.24ID:pJbYwVEp https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/set_1
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな〜と予想してるんですがaは全く見当がつかないです
917デフォルトの名無しさん
2020/07/15(水) 06:51:32.91ID:73kyB1S/ Arithmetic
918デフォルトの名無しさん
2020/07/15(水) 15:46:16.46ID:nRIpdjFe if 感染者数==0 (
goto campaign
) else (
goto campaign
)
goto campaign
) else (
goto campaign
)
919デフォルトの名無しさん
2020/07/15(水) 21:08:21.69ID:NpGOzuTH w
920デフォルトの名無しさん
2020/07/15(水) 22:58:28.42ID:SqApoBlS921デフォルトの名無しさん
2020/07/15(水) 23:48:35.91ID:vc+VU4Sj >>917 が教えてくれてるよ
922デフォルトの名無しさん
2020/07/15(水) 23:53:31.66ID:SqApoBlS >>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?
923デフォルトの名無しさん
2020/07/16(木) 00:26:22.36ID:3qBZIgLF /a は 単純に answer かな
924デフォルトの名無しさん
2020/07/16(木) 05:41:06.12ID:smyagw08925デフォルトの名無しさん
2020/07/16(木) 11:47:24.17ID:lU9BoPI+ 以降あいうえお作文スレ
926デフォルトの名無しさん
2020/07/16(木) 13:33:25.11ID:d6//+ANU Arithmeticって+-*/のことじゃないの?
927デフォルトの名無しさん
2020/07/17(金) 00:25:33.43ID:C6Q8EyYV +とか-はarithmetic operatorだね
928デフォルトの名無しさん
2020/07/18(土) 01:59:17.03ID:6qVTTMhl 大体は理想通りに出来たのですが時々不要なpathをremで無効にするとstartコマンドがなぜかC:\hoge\を開いてしまうので回避できないでしょうか?
バッチ初心者なので汚いのはご容赦下さい
SET TARGET_EXE1=C:\hoge\hoge.bat
SET TARGET_EXE2=C:\hoge\huge.lnk
rem SET TARGET_EXE3=C:\hoge\hege.exe
for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%")
timeout /t 8 > NUL
exit 0
:F_NM
echo %~nx1
START "" %1
goto :EOF
バッチ初心者なので汚いのはご容赦下さい
SET TARGET_EXE1=C:\hoge\hoge.bat
SET TARGET_EXE2=C:\hoge\huge.lnk
rem SET TARGET_EXE3=C:\hoge\hege.exe
for /l %%i in (1,1,6) do (call :F_NM "%%TARGET_EXE%%i%%")
timeout /t 8 > NUL
exit 0
:F_NM
echo %~nx1
START "" %1
goto :EOF
929デフォルトの名無しさん
2020/07/18(土) 05:56:42.11ID:mgWYGhz7 if not "%~1"=="" START "" %1
930デフォルトの名無しさん
2020/07/18(土) 08:09:21.26ID:ddPranTH if exist "%~1" start "" "%~1"
931デフォルトの名無しさん
2020/07/18(土) 08:50:03.50ID:ddPranTH for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")
932デフォルトの名無しさん
2020/07/18(土) 14:36:51.45ID:4sfyyT7O933デフォルトの名無しさん
2020/07/18(土) 15:31:48.20ID:GUFQRDdz >>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?
934デフォルトの名無しさん
2020/07/18(土) 15:40:41.02ID:VVrReUQE start /?
最初のは "タイトル"
最初のは "タイトル"
935デフォルトの名無しさん
2020/07/18(土) 19:10:23.40ID:mgWYGhz7936デフォルトの名無しさん
2020/07/18(土) 20:08:37.75ID:xxg3trOa "" START ""
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね
937デフォルトの名無しさん
2020/07/19(日) 00:01:19.79ID:nPfUu10f938デフォルトの名無しさん
2020/07/19(日) 00:15:51.03ID:nmSNkapE >>936
完全にこれでしたすみません
完全にこれでしたすみません
939デフォルトの名無しさん
2020/07/31(金) 20:28:20.67ID:uhGaPqk6 面白い書き方見付けた
c:\APP\DoeView>popd
c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:34.70 [pushd:ok]
c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:38.48 [pushd:fail]
c:\APP\DoeView>popd
c:\APP>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:34.70 [pushd:ok]
c:\APP\DoeView>set /p<nul=%date%%time% [pushd:&@pushd doeview >nul 2>&1 && echo ok]||echo fail]
2020/07/31 (金)20:14:38.48 [pushd:fail]
940デフォルトの名無しさん
2020/08/01(土) 00:13:59.61ID:oGghCVi0 >>939
解説お願いします
解説お願いします
941デフォルトの名無しさん
2020/08/01(土) 01:53:16.42ID:mxUlZpQQ 他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
…
goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)
…
goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?
942デフォルトの名無しさん
2020/08/01(土) 06:07:29.27ID:hnL660kY 他のとやらが標準出力読めるなら
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか
943デフォルトの名無しさん
2020/08/01(土) 10:06:48.10ID:KdkXblI6 >>939
なるほど
set /p<nul=%date%%time% [pushd:
と
@pushd doeview >nul 2>&1 && echo ok]||echo fail]
を & でつないだという訳か。で前半を普通の順番に書き直すと
set /p =%date%%time% [pushd:<nul
で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。
後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
なるほど
set /p<nul=%date%%time% [pushd:
と
@pushd doeview >nul 2>&1 && echo ok]||echo fail]
を & でつないだという訳か。で前半を普通の順番に書き直すと
set /p =%date%%time% [pushd:<nul
で、set /pの変数名を空にすることで、改行をつけないechoの代わりとして使っていると。
後半はpushd doeviewを実行して、成功したらok]、失敗したらfail]を表示してるだけだな。
944デフォルトの名無しさん
2020/08/01(土) 15:48:10.34ID:mxUlZpQQ945デフォルトの名無しさん
2020/08/01(土) 16:20:21.81ID:hnL660kY copy nul $tmp.txt
hoge.exe >>$tmp.txt
for /f "delims=" %%a in ($tmp.txt) do (
if "%%a"=="コマンド1" (処理1 &echo 結果1)
if "%%a"=="コマンド2" (処理2 &echo 結果2)
…
)
こういう風に一旦txtに書き出しじゃダメなん?
hoge.exe >>$tmp.txt
for /f "delims=" %%a in ($tmp.txt) do (
if "%%a"=="コマンド1" (処理1 &echo 結果1)
if "%%a"=="コマンド2" (処理2 &echo 結果2)
…
)
こういう風に一旦txtに書き出しじゃダメなん?
946デフォルトの名無しさん
2020/08/01(土) 17:49:00.41ID:y/Re9bvj >>944
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも
947デフォルトの名無しさん
2020/08/01(土) 23:16:08.23ID:mxUlZpQQ どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。
将棋所
http://shogidokoro.starfree.jp/index.html
USIプロトコル
http://shogidokoro.starfree.jp/usi.html
USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…
>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどうすれば良いのか…
将棋所
http://shogidokoro.starfree.jp/index.html
USIプロトコル
http://shogidokoro.starfree.jp/usi.html
USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…
>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどうすれば良いのか…
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 次スレは?
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 【大分】佐賀関で大規模火災、170棟以上が延焼中 70代男性1人と連絡取れず [ぐれ★]
- 【サッカー】日本代表MF 中村敬斗 ボリビア戦のスーパーゴールに「惚れるわ」「痺れる程のゴールこれでご飯何杯いけるのよ」 [阿弥陀ヶ峰★]
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「クマはなるべく山に返す努力を」「クマと戦争は間違っている」動物保護活動家の主張 棲み分けと学習放獣でクマ被害なくなるのか?★7 [ぐれ★]
- アンケート調査で「高市発言は問題なし」 93.5%wwwwwwwwwwwwwwwwwwwwwwwww [279254606]
- 【悲報】大分市佐賀関の火事、20軒→170軒に延焼🔥 [481941988]
- 自閉症が「んなっしょい」と連呼するお🏡
- 日本人の海外旅行したきのマナーよくなったのはいつから
- へそグリグリ
- 結婚しないやつは異性は嫌いなの?
