X



【.cmd】 バッチファイルスクリプト %13 【.bat】

レス数が1000を超えています。これ以上書き込みはできません。
2018/11/21(水) 14:52:07.84ID:v84I4o+L
拡張子が .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/
2020/08/02(日) 00:01:49.63ID:SCuZm8dn
>エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも
2020/08/02(日) 00:12:10.36ID:SCuZm8dn
> setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし
950947
垢版 |
2020/08/02(日) 15:10:30.75ID:pqbO4ExB
>>949
やっぱそうですか…
残念ですが諦めます
ありがとうございました
951デフォルトの名無しさん
垢版 |
2020/08/07(金) 17:37:19.06ID:ztGuRGFM
フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです

これを

フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2

こうしたいです

ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2


フォルダ名が重複した場合の処理も必要かもしれないです

バッチは読みにくすぎですね
2020/08/07(金) 22:11:16.88ID:wnzPeWR5
>>951
そもそもツリー表現が変だと思う。

├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
  ├ファイル1
  └ファイル2

tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?
2020/08/07(金) 22:17:23.17ID:5wWI/sIC
>>951
エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど
それを考慮する必要あるの?
2020/08/08(土) 00:00:00.04ID:c43C7xo+
for /r %%i in (.)で下位フォルダ名取得
  そのフォルダ内の最初のファイル名を取得(ソート指定)
  対象フォルダ名の変更

もしやるならvbs噛ませると思う
955デフォルトの名無しさん
垢版 |
2020/08/08(土) 05:43:20.34ID:jNP2OM4q
>>953
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです
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
2020/08/08(土) 08:25:04.94ID:HPaGwZBp
どうでも良いことに拘るアホ
2020/08/08(土) 09:01:08.32ID:nLoi7MqI
どうでもいいと言うならテメーがどっちかに決めろや
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ
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
では今回はエクスプローラ側の並び順がいいです
2020/08/08(土) 10:22:17.59ID:cJmgrNkw
>>960
吠えるしかできない間抜け乙w

>>961
ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理
PowerShellかC#とかでやった方がいい
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
964デフォルトの名無しさん
垢版 |
2020/08/08(土) 11:14:22.00ID:jNP2OM4q
>>962
ではcmdでいいです
あるいはpython環境のほうが楽ですか?
>>963
cmdのコードは理解が難しいですね、、、
965デフォルトの名無しさん
垢版 |
2020/08/08(土) 12:00:51.68ID:jNP2OM4q
globでやってみます
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
967デフォルトの名無しさん
垢版 |
2020/08/08(土) 14:01:14.15ID:jNP2OM4q
pythonでは向いてないですか
2020/08/08(土) 15:20:59.87ID:IdUt1ux3
pythonはスレチ
2020/08/08(土) 15:22:12.94ID:0U8ymD0p
>>967
ならPythonスレで聞けよ…
2020/08/08(土) 16:11:06.79ID:Uh3gedSc
dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから
wshでリネーム用のバッチファイルを作る方が楽かな

wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい
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 }
2020/08/09(日) 06:16:13.05ID:wnSURbps
そろそろ出てくるかと思ってた
2020/08/09(日) 06:38:11.28ID:fObB6/0g
予測通り?
2020/08/09(日) 08:51:35.00ID:AwQ8dIl5
>>971
それはSEが無能なだけ
一から十まで決定しなくても開発は進められる
976デフォルトの名無しさん
垢版 |
2020/08/09(日) 16:47:47.63ID:0zxLTv88
典型的な無能の発言だな
2020/08/09(日) 23:22:34.78ID:TBMXuXvF
>>972
オワコンRubyジジイが出てきたか
困るよね、こういう老害

>>975
進められるけど手戻りして予算オーバーするわけね
お前が無能
978デフォルトの名無しさん
垢版 |
2020/08/10(月) 01:55:02.34ID:9+h/1Osf
>>977
> 進められるけど手戻りして予算オーバーする

マヌケが要件定義を担当するとそうなるねw
バカな開発チームだと、なぜか「ユーザーが悪い」という認識になるww
2020/08/10(月) 03:38:30.58ID:1F6bB0mG
あいまいなのはユーザーが自分でも要求を把握しきっていないためだから
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ
2020/08/10(月) 04:21:21.96ID:mFEy/HZR
> あいまいなのはユーザーが自分でも要求を把握しきっていないため

ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ
2020/08/10(月) 11:53:14.80ID:ZLJuvAm6
ある程度ブレても、いいように開発できればいいのですけれどもね。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。
2020/08/10(月) 21:32:34.56ID:+SLQPb+P
>>981
それは折衝役がシステム開発に疎いだけ
営業トークだけの人間が事態を悪化させる
983デフォルトの名無しさん
垢版 |
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ファイルでどのように書けば出来ますか?
2020/08/13(木) 22:00:40.82ID:E452L2zK
>>983
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?

書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…
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
2020/08/14(金) 09:14:47.97ID:oJspCYOK
イヤミでは、なく止したら? <Ruby
2020/08/14(金) 09:32:16.73ID:cdtRNbgQ
Swiss File Knife
2020/08/14(金) 09:39:33.54ID:dCe/n24a
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で読んで行番号を表示させる
2020/08/14(金) 21:06:33.51ID:II+YlR7/
2020/08/14(金) 22:02:35.58ID:TmzvbeJo
>>995
ウンコみたいにダサいコードをよく晒せるな。
生きてて楽しい?
2020/08/14(金) 22:14:12.37ID:B6QaDwta
未来予知乙
生きてる価値もないなw
993デフォルトの名無しさん
垢版 |
2020/08/14(金) 22:43:27.80ID:9FGl+Ien
低能Ruby厨か
2020/08/14(金) 23:06:43.67ID:TmzvbeJo
リダイレクトカードオープン!
>>991 から >>995 へのアンカーは >>985 へリダイレクトされる!

が、Ruby爺は人格障害者だった!
精神的ダメージを受けていない!

Ruby爺がVZ爺を召喚しようとしている!
が、自分自身だったので召喚できない!

Ruby爺がダサいコードを唱え始めた!
似非プログラマーは発狂した!
歴戦のプログラマーは何も感じていない!

歴戦のプログラマーの攻撃!
Ruby爺は5のダメージ!
歴戦のプログラマーはRuby爺をやっつけた!

経験値を0exp、ゴールドを0G 手に入れた!

「何だよ無職ニートの爺かよ…」と歴戦のプログラマーは思った。
995デフォルトの名無しさん
垢版 |
2020/08/14(金) 23:10:45.52ID:SCMnTycc
Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?
2020/08/14(金) 23:35:08.04ID:LY+T9Pmp
EDLIN
2020/08/15(土) 00:03:00.44ID:fUIncIgN
2020/08/15(土) 01:45:30.34ID:t8slxubu
次スレは?
2020/08/15(土) 02:14:16.82ID:RWxrHj8y
https://www.vector.co.jp/vpack/filearea/dos/util/bat/
2020/08/15(土) 06:59:18.06ID:R7NunwzB
質問いいでしょうか
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況