【.cmd】 バッチファイルスクリプト %13 【.bat】at TECH
【.cmd】 バッチファイルスクリプト %13 【.bat】 - 暇つぶし2ch916:デフォルトの名無しさん
20/06/27 20:08:23.94 dZCme2QN.net
テキストファイルに入ってる文字列を
一行ごとに読み込んで
フォルダを作るバッチをつくったのですが
半角スペースの文字列が分割されてしまいます
これって対応策ありますか?

917:デフォルトの名無しさん
20/06/27 20:23:13.74 7ozUCHmg.net
>>876
for /f "tokens=*" %%i in (data.txt) do md "%%~i"

918:デフォルトの名無しさん
20/06/28 21:21:38 elMokmc1.net
>>877
できたサンクス
助かった

919:デフォルトの名無しさん
20/06/30 15:01:18.03 SwuJ9TNP.net
ファイル名全角英字の大文字小文字を同じとみなしていた
A.txt に他フォルダのa.txtを上書きコピーしてもA,txtのままだった
Aaは全角英字
芸が細かい、いいか悪いかは別として

920:デフォルトの名無しさん
20/06/30 19:03:57 PSeL/c0z.net
ワイルドカードの ? の仕様がイマイチ分からない
abc と abc1 のファイルがあったとして

>dir /b abc?
abc
abc1

>dir /b ?abc
ファイルが見つかりません

>dir /b a?bc
ファイルが見つかりません

なぜ見つからないのか
1ないし0個の文字じゃないのか

921:デフォルトの名無しさん
20/06/30 19:07:42 /pl8PJcc.net
ワイルドカードで?は任意の1文字を示す

922:デフォルトの名無しさん
20/06/30 19:14:29.14 PSeL/c0z.net
では abc? で abc が一致するのはなぜ

923:デフォルトの名無しさん
20/06/30 19:19:02.81 /pl8PJcc.net
abc.でマッチするからだと思う

924:デフォルトの名無しさん
20/06/30 19:21:41.87 PSeL/c0z.net
なるほど。ありがとう

925:デフォルトの名無しさん
20/06/30 19:28:18.05 PSeL/c0z.net
abc?? や abc??? でも一致するようだ

926:デフォルトの名無しさん
20/06/30 19:49:40.78 tIigavUn.net
URLリンク(www.pg-fl.jp)
URLリンク(kayuitoko.blog129.fc2.com)

927:デフォルトの名無しさん
20/06/30 19:59:31.31 PSeL/c0z.net
abc??.?? とかも一致するね。たぶん仕様というよりバグ

928:デフォルトの名無しさん
20/06/30 21:39:19 clO9Gt1K.net
ピリオドが絡むとワイルドカードはおかしな動きするよ。

filename_yyyy.mm.dd.dat

みたいなもんが

dir *_????.??.??.dat

で引っかからない。>>887 の言う通り、多分バグ。ピリオド以降を拡張子とみなすみたい。

filename_yyyy-mm-dd.dat

として

dir *_????-??-??.dat

だとちゃんと引っかかるから、俺はファイル名に日付を付けるなら - を使っている。

929:デフォルトの名無しさん
20/07/01 07:22:43.96 sbIkpZ+y.net
ワイルドカードは色々とおかしい
>echo > "abc" & echo > "


930: abc" >for %i in ("abc*") do @echo "%i" "abc" " abc"



931:デフォルトの名無しさん
20/07/01 07:57:25.88 9hqgfVHi.net
そっちはたぶん8.3形式が引っかかってるんだろう

932:デフォルトの名無しさん
20/07/04 22:02:55.18 r0U5W+Xd.net
PC初心者です。
初めてバッチファイルの作成にチャレンジしています。
ドライブ(丸ごと)→別のドライブのフォルダ、にバックアップを取りたくてrobocopyを使ってミラーコピーをしました。
コピーはうまくいくのですが、コピーする度にコピー先に「Recovery」という名の空フォルダが作成されてしまいます。
これはなぜでしょうか?回避方法はありますか?

933:デフォルトの名無しさん
20/07/04 22:37:12.45 KIcU78VY.net
>>891
ggrks

934:デフォルトの名無しさん
20/07/04 22:39:29.92 QUXtQ3do.net
たぶん、A ファイルがあって、それを上書きする時に、
安全確保のために一旦、別のフォルダ・Recovery へコピーしてから、上書きして、
正常に上書きした後に、Recovery内のA を削除している
ただ、すべて正常に済んだ後に、Recoveryフォルダを削除し忘れているのだろう

935:891
20/07/05 11:17:14.37 eLIuBas1.net
>>893
ありがとうございます。
バックアップ自体は問題なさそうなので、このままで使ってみようと思います。

936:デフォルトの名無しさん
20/07/05 15:06:46.22 1amJ61U+.net
>>893
>>894
コピー元のドライブに SH 属性(システム属性+隠し属性)で「Recovery」っていう空のフォルダがあるはずなの。
ドライブを丸ごと robocopy すると強制的に SH 属性が付くから、最後に attrib -S -H してやる必要があるし、>>894 はそれをしてると思う。
そしたら「Recovery」が見えるようになった、というだけの話でしょ…これ。
コピー元のルートディレクトリに行って「dir /a」して確認してみ?

937:891
20/07/07 00:32:35.56 TndHy5rX.net
>>895
「dir /a」して確認してみたところ、仰る通りでした!「Recovery」フォルダは不要なので削除しました。
有難うございました!

938:デフォルトの名無しさん
20/07/08 04:28:57.30 lPT19RKJ.net
超初歩的な質問いいですか?
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
①のCというフォルダを中にある1.txt 2.txtごと②にコピーして③のようにしたい時、どう入力したらいいですか?
すでに③のような状態にある時もコピーして上書きしたいのですが
ググれって言われるのはわかってますが、ディレクトリがどうのこうのとか、robocopyだのxcopyだの説明が糞下手くそであんなの理解できるわけないので

939:デフォルトの名無しさん
20/07/08 04:57:01.58 xPuqy2ih.net
>>897
せめて、何を試してうまく行かなかった、とか試行錯誤の具体的な
過程があれば説明、答えを教えてくれるひとがいるかも

940:デフォルトの名無しさん
20/07/08 05:13:48.40 H59ZusVp.net
>>897
普通にcopy使えよ

941:デフォルトの名無しさん
20/07/08 05:29:09.34 plYM8yLW.net
>>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

942:デフォルトの名無しさん
20/07/08 05:44:34.05 lPT19RKJ.net
>>900
どうもありがとうございました。
自分でも色々やって試しててうまくいかず質問したのですが、
原�


943:ェ保存した文字コードがUTF-8だったためでした。 ANSIに変えたらうまくいきました。



944:デフォルトの名無しさん
20/07/08 11:29:53 Z8A6jaoN.net
xcopy よりは、robocopy を使った方が良いのでは?

xcopyは、あまり見ない

945:デフォルトの名無しさん
20/07/08 12:24:18.71 lp5P2pBO.net
dosで使えなくなるだろ

946:デフォルトの名無しさん
20/07/08 12:46:00.57 Lb+zauke.net
たしかに、DOSは、Xcopyまでだったか。
pureDOSには、robocopyはないのだな。

947:デフォルトの名無しさん
20/07/08 12:56:46.06 plYM8yLW.net
robocopyは絶望的に遅い
複雑な条件がないのならxcopyがいい

948:デフォルトの名無しさん
20/07/08 15:01:55.81 z330e5aM.net
robocopyは、ミラーリングで使用したときに、
消される側にフォルダのシンボリックリンクがあると、
リンク先実体フォルダ内のファイルごと消されるというバグが有る。
/xjd /xjf /xj /sl 全部ダメ。
怖くて使えない。

949:デフォルトの名無しさん
20/07/08 18:21:45.08 ebRsk5Wi.net
ま?

950:895
20/07/08 19:29:53.78 fFkGRU4d.net
>>896
空なら大丈夫だと思うけど、場合によってはそこに WinRE (Windows 回復環境)が入ることがある。
(バグやディスク容量の関係)
URLリンク(www.atmarkit.co.jp)
だから丸っきり不要ってわけでもないのだよ。

951:デフォルトの名無しさん
20/07/09 01:19:26.67 oG8bZA2s.net
URLリンク(itomo.cocolog-nifty.com)
このサイトを参考に実験フォルダにテキストファイルを量産して*.txtで検索するように書き換えて実行したんだけど
(ファイル名)が見つかりません。って表示が出るだけで上手くいかないけど何か抜けてるのかな?
もちろん対象フォルダには移動している

952:デフォルトの名無しさん
20/07/09 02:32:11.02 zMPqHoYq.net
>>909
先頭のecho off をいったん外して、変数がどう展開されてるか確認してみたら?

953:デフォルトの名無しさん
20/07/09 04:53:54.78 gEWbrPAM.net
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

954:デフォルトの名無しさん
20/07/09 06:30:12.62 o2t2WZIU.net
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

955:デフォルトの名無しさん
20/07/09 06:31:35.37 o2t2WZIU.net
ああ LastAccessTimeじゃくてLastWriteTime

956:デフォルトの名無しさん
20/07/09 13:30:39 oG8bZA2s.net
>>910
初歩的なミスで恥ずかしいですが量産したテキストファイル名に空白が入っている


957:事が原因でした そこで汎用性を持たせるために空白が入ったファイルも検出したいのですがワイルドカードで検索する方法はありますか?



958:デフォルトの名無しさん
20/07/09 16:17:08 t1UM8kjV.net
>>914
ファイル名に相当する箇所をクオート

959:デフォルトの名無しさん
20/07/15 06:27:24.24 pJbYwVEp.net
URLリンク(docs.microsoft.com)
setコマンドのパラメータで/pとか/aとか指定できますがこのアルファベット1文字が何の略か教えてください
pはPromptStringかな~と予想してるんですがaは全く見当がつかないです

960:デフォルトの名無しさん
20/07/15 06:51:32 73kyB1S/.net
Arithmetic

961:デフォルトの名無しさん
20/07/15 15:46:16.46 nRIpdjFe.net
if 感染者数==0 (
goto campaign
) else (
goto campaign
)

962:デフォルトの名無しさん
20/07/15 21:08:21.69 NpGOzuTH.net
w

963:デフォルトの名無しさん
20/07/15 22:58:28.42 SqApoBlS.net
>>916
MSの英語フォーラムとか
英語版StackOverFlowとか
Redditとか
で尋ねたら?英語で。
本当に知りたいなら英語圏に聞け。英語圏に。

964:デフォルトの名無しさん
20/07/15 23:48:35.91 vc+VU4Sj.net
>>917 が教えてくれてるよ

965:デフォルトの名無しさん
20/07/15 23:53:31.66 SqApoBlS.net
>>921
arithmetic(算術) もいいけど algebra(代数)て解釈もあんじゃね?

966:デフォルトの名無しさん
20/07/16 00:26:22.36 3qBZIgLF.net
/a は 単純に answer かな

967:デフォルトの名無しさん
20/07/16 05:41:06.12 smyagw08.net
>>923
まじで?
いや普通にarithmeticでしょw

968:デフォルトの名無しさん
20/07/16 11:47:24.17 lU9BoPI+.net
以降あいうえお作文スレ

969:デフォルトの名無しさん
20/07/16 13:33:25.11 d6//+ANU.net
Arithmeticって+-*/のことじゃないの?

970:デフォルトの名無しさん
20/07/17 00:25:33.43 C6Q8EyYV.net
+とか-はarithmetic operatorだね

971:デフォルトの名無しさん
20/07/18 01:59:17.03 6qVTTMhl.net
大体は理想通りに出来たのですが時々不要な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

972:デフォルトの名無しさん
20/07/18 05:56:42.11 mgWYGhz7.net
if not "%~1"=="" START "" %1

973:デフォルトの名無しさん
20/07/18 08:09:21.26 ddPranTH.net
if exist "%~1" start "" "%~1"

974:デフォルトの名無しさん
20/07/18 08:50:03.50 ddPranTH.net
for /l %%i in (1,1,6) do (if defined TARGET_EXE%%i call :F_NM "%%TARGET_EXE%%i%%")

975:デフォルトの名無しさん
20/07/18 14:36:51.45 4sfyyT7O.net
>>929->>931
ありがとうございます
not exist definedの違いなど勉強して盛り込んでみます

976:デフォルトの名無しさん
20/07/18 15:31:48 GUFQRDdz.net
>>929
すいません startコマンドのクォーテーションを二重がけにはどんな意味があるのでしょうか?

977:デフォルトの名無しさん
20/07/18 15:40:41.02 VVrReUQE.net
start /?
最初のは "タイトル"

978:デフォルトの名無しさん
20/07/18 19:10:23.40 mgWYGhz7.net
>>933
%1の引用符なしが%~1
だから"%~1"は二重がけではない

979:デフォルトの名無しさん
20/07/18 20:08:37.75 xxg3trOa.net
"" START ""
に見えたってことなら
if not "%~1"=="" (
START "" %1
)
こうね

980:デフォルトの名無しさん
20/07/19 00:01:19.79 nPf


981:Uu10f.net



982:デフォルトの名無しさん
20/07/19 00:15:51.03 nmSNkapE.net
>>936
完全にこれでしたすみません

983:デフォルトの名無しさん
20/07/31 20:28:20.67 uhGaPqk6.net
面白い書き方見付けた
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]

984:デフォルトの名無しさん
20/08/01 00:13:59.61 oGghCVi0.net
>>939
解説お願いします

985:デフォルトの名無しさん
20/08/01 01:53:16.42 mxUlZpQQ.net
他のプログラムと標準入出力でやりとりするバッチファイルを作ろうとしています。
:INPUT
set /p INP=
if "%INP%"=="コマンド1" (
処理1
echo 結果1
goto INPUT)
if "%INP%"=="コマンド2" (
処理2
echo 結果2
goto INPUT)

goto INPUT
こんな感じにしたんですが、コマンドが連続で送られてくると取りこぼしてしまうようです。
何か対策は無いでしょうか?

986:デフォルトの名無しさん
20/08/01 06:07:29.27 hnL660kY.net
他のとやらが標準出力読めるなら
set /p INP=inputok
読めないならこぼさない程度に決め打ちでsleep挟んで送るようにするしか

987:デフォルトの名無しさん
20/08/01 10:06:48.10 KdkXblI6.net
>>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]を表示してるだけだな。

988:デフォルトの名無しさん
20/08/01 15:48:10.34 mxUlZpQQ.net
>>942
やりとり相手のプログラムはバッチファイルでもないし自分で作ったわけでもないので調整できません…
やっぱ無理ですかね…

989:デフォルトの名無しさん
20/08/01 16:20:21.81 hnL660kY.net
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に書き出しじゃダメなん?

990:デフォルトの名無しさん
20/08/01 17:49:00.41 y/Re9bvj.net
>>944
実行速度を気にしないゆっくりでいいのなら、
tasklist に実行するプログラムがあれば待機する
実行するプログラムの終了コード(errorlevel)の癖がわかっているなら
errorlevelで終わったかそうかわかるかも

991:デフォルトの名無しさん
20/08/01 23:16:08 mxUlZpQQ.net
どうも「相手のプログラム」がイメージしづらいようなので、プログラムそのものを貼ります。

将棋所
URLリンク(shogidokoro.starfree.jp)

USIプロトコル
URLリンク(shogidokoro.starfree.jp)

USIプロトコル対応の将棋エンジンをバッチファイルで作る、という遊びをしようとしています。
現状将棋エンジンとして登録する(usiコマンドに対してid他を返す)ところまではできますが、
対局しようとするとsetoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない、等でまともに動きません。
デバッグウィンドウからコマンドを送れば一応動きますが…

>>945
一旦txtに出力するのは考えましたが、具体的な書き方が思いつきません…
将棋所に登録するバッチファイルと、コマンドを処理するバッチファイルの2つに分ける、
とかも考えたんですが、結局その2つのやり取りをどう�


992:キれば良いのか…



993:デフォルトの名無しさん
20/08/02 00:01:49.63 SCuZm8dn.net
>エンジンは常に(たとえ思考中であっても)コマンドの受信ができる必要があります
guiからのコマンドにどういったものがあるのかまではまだ見てないけどバッチ一つじゃ無理だと思う
制御用兼入出力用Aのバッチと思考エンジンBのバッチの最低2つは要るんじゃないかな
Bは候補手をtmpに書き出し続けてguiから時間て言われたらAがtaskkillしてtmp読み取りして返すとか
これでもgui側でコマンド送る最低間隔何秒とかを設定出来無いと取りこぼすかも
思考エンジン部分はバッチで出来るだろうけどコマンドやり取りする制御部分はバッチでは厳しいかも

994:デフォルトの名無しさん
20/08/02 00:12:10.36 SCuZm8dn.net
> setoptionとisreadyが連続で送られてきてisreadyを認識できず、readyokを返せない
あーこの時点で無理なら厳しいね
バッファ用としてのプログラムを間に挟まないと
で、バッファ挟むくらいならどうせなら制御も…てなるだろうし

995:947
20/08/02 15:10:30.75 pqbO4ExB.net
>>949
やっぱそうですか…
残念ですが諦めます
ありがとうございました

996:デフォルトの名無しさん
20/08/07 17:37:19.06 ztGuRGFM.net
フォルダが複数あり、フォルダ内の先頭のファイルネームをフォルダ名としたいです
これを
フォルダ1
├ファイル1
├ファイル2
フォルダ2
├ファイル1
├ファイル2
こうしたいです
ファイル1
├ファイル1
├ファイル2
ファイル1
├ファイル1
├ファイル2

フォルダ名が重複した場合の処理も必要かもしれないです
バッチは読みにくすぎですね

997:デフォルトの名無しさん
20/08/07 22:11:16.88 wnzPeWR5.net
>>951
そもそもツリー表現が変だと思う。
├フォルダ1
│├ファイル1
│└ファイル2
└フォルダ2
  ├ファイル1
  └ファイル2
tree コマンドの出力をトラップして改変する方向で考えたら楽なんじゃない?

998:デフォルトの名無しさん
20/08/07 22:17:23 5wWI/sIC.net
>>951
エクスプローラーでの表示順と dir コマンドでの表示順は異なるけど
それを考慮する必要あるの?

999:デフォルトの名無しさん
20/08/08 00:00:00.04 c43C7xo+.net
for /r %%i in (.)で下位フォルダ名取得
  そのフォルダ内の最初のファイル名を取得(ソート指定)
  対象フォルダ名の変更
もしやるならvbs噛ませると思う

1000:デフォルトの名無しさん
20/08/08 05:43:20.34 jNP2OM4q.net
>>953
とりあえずいらないですが、名前順で並び替えた場合、先頭にくるものをフォルダ名としたいです

1001:デフォルトの名無しさん
20/08/08 08:06:33.19 ulitZ7VR.net
>>955
だからその「名前順で並べ替え」がdirとエクスプローラーで違うって話
URLリンク(support.microsoft.com)

1002:デフォルトの名無しさん
20/08/08 08:25:04.94 HPaGwZBp.net
どうでも良いことに拘るアホ

1003:デフォルトの名無しさん
20/08/08 09:01:08.32 nLoi7MqI.net
どうでもいいと言うならテメーがどっちかに決めろや
どうでもいいと言いながらできてからなんで違うんだ?とか言う奴多すぎ

1004:デフォルトの名無しさん
20/08/08 09:25:59.89 XY4Xe7zO.net
ところで、質問者本人は、どちらを・・・・。

1005:デフォルトの名無しさん
20/08/08 09:32:21.16 d2hZRkL/.net
仕様を全て決めないと取り掛かれないマヌケ多すぎ
無能は本筋から外れたところで発狂してろ

1006:デフォルトの名無しさん
20/08/08 09:59:17.57 jNP2OM4q.net
>>956
では今回はエクスプローラ側の並び順がいいです

1007:デフォルトの名無しさん
20/08/08 10:22:17.59 cJmgrNkw.net
>>960
吠えるしかできない間抜け乙w
>>961
ならStrCmpLogicalW()を使わないとダメだからバッチではほぼ無理


1008: PowerShellかC#とかでやった方がいい



1009:デフォルトの名無しさん
20/08/08 11:11:14 6XUmF/b8.net
とりあえずこんな感じ?(先頭は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

1010:デフォルトの名無しさん
20/08/08 11:14:22 jNP2OM4q.net
>>962
ではcmdでいいです
あるいはpython環境のほうが楽ですか?
>>963
cmdのコードは理解が難しいですね、、、

1011:デフォルトの名無しさん
20/08/08 12:00:51 jNP2OM4q.net
globでやってみます

1012:デフォルトの名無しさん
20/08/08 12:16:11.89 XwBZfJ1v.net
リネーム処理とかはもう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

1013:デフォルトの名無しさん
20/08/08 14:01:14.15 jNP2OM4q.net
pythonでは向いてないですか

1014:デフォルトの名無しさん
20/08/08 15:20:59.87 IdUt1ux3.net
pythonはスレチ

1015:デフォルトの名無しさん
20/08/08 15:22:12.94 0U8ymD0p.net
>>967
ならPythonスレで聞けよ…

1016:デフォルトの名無しさん
20/08/08 16:11:06.79 Uh3gedSc.net
dir /ad /b /s > tmp.txt とかで処理対象のディレクトリ名をテキストに落としてから
wshでリネーム用のバッチファイルを作る方が楽かな
wshではテキストを一括読みして変数に入れて
テキストを順次読みしながら↑の変数の内容をバッチファイルのコマンドに変更してく
下位ディレクトリや同一フォルダ名になるときの判定などもしやすい
もし失敗しても、原因を見つけやすいしリカバリーもしやすい

1017:デフォルトの名無しさん
20/08/09 04:55:36 z2n3MQIn.net
仕様がないと取りかかれないと言うが
発注者が仕様を曖昧にしておくほうが罪深いだろ
要件定義が甘くて泣きをみるのはいつも現場だ

1018:デフォルトの名無しさん
20/08/09 05:42:25.80 KFfdng53.net
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 }

1019:デフォルトの名無しさん
20/08/09 06:16:13.05 wnSURbps.net
そろそろ出てくるかと思ってた

1020:デフォルトの名無しさん
20/08/09 06:38:11.28 fObB6/0g.net
予�


1021:ェ通り?



1022:デフォルトの名無しさん
20/08/09 08:51:35.00 AwQ8dIl5.net
>>971
それはSEが無能なだけ
一から十まで決定しなくても開発は進められる

1023:デフォルトの名無しさん
20/08/09 16:47:47.63 0zxLTv88.net
典型的な無能の発言だな

1024:デフォルトの名無しさん
20/08/09 23:22:34.78 TBMXuXvF.net
>>972
オワコンRubyジジイが出てきたか
困るよね、こういう老害
>>975
進められるけど手戻りして予算オーバーするわけね
お前が無能

1025:デフォルトの名無しさん
20/08/10 01:55:02.34 9+h/1Osf.net
>>977
> 進められるけど手戻りして予算オーバーする
マヌケが要件定義を担当するとそうなるねw
バカな開発チームだと、なぜか「ユーザーが悪い」という認識になるww

1026:デフォルトの名無しさん
20/08/10 03:38:30.58 1F6bB0mG.net
あいまいなのはユーザーが自分でも要求を把握しきっていないためだから
あとでこうしてくれやっぱりああしてくれとコロコロと仕様変更してくるのが常だろ

1027:デフォルトの名無しさん
20/08/10 04:21:21.96 mFEy/HZR.net
> あいまいなのはユーザーが自分でも要求を把握しきっていないため
ブレない軸を導き出せないような無能SEは多いよね
ある程度ブレてもダメージが少ないように開発するのが主流ですよ

1028:デフォルトの名無しさん
20/08/10 11:53:14.80 ZLJuvAm6.net
ある程度ブレても、いいように開発できればいいのですけれどもね。
時折、ニュースでも、開発できなかったということで、クライアント側と、
メーカー側で裁判になっていますから、難しいのだろうと思うのですが。

1029:デフォルトの名無しさん
20/08/10 21:32:34 +SLQPb+P.net
>>981
それは折衝役がシステム開発に疎いだけ
営業トークだけの人間が事態を悪化させる

1030:デフォルトの名無しさん
20/08/13 21:47:50.59 5FyzI8Jm.net
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ファイルでどのように書けば出来ますか?

1031:デフォルトの名無しさん
20/08/13 22:00:40.82 E452L2zK.net
>>983
情報不足。
・Soft.ini の絶対に12行目と13行目か?んなこたぁねぇだろ。
・update の日付が更新されなかった場合はどうするの?
・ていうか .ini で「=」の左右に半角空白を入れるってどういうアプリだ?
書きようはあるが、for /? と打って自分で調べた方が早いだろ、これは。
どこかの新入社員だとか学生の課題っぽいな…

1032:デフォルトの名無しさん
20/08/14 08:32:48.63 SCMnTycc.net
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

1033:デフォルトの名無しさん
20/08/14 09:14:47.97 oJspCYOK.net
イヤミでは、なく止したら? <Ruby

1034:デフォルトの名無しさん
20/08/14 09:32:16.73 cdtRNbgQ.net
Swiss File Knife

1035:デフォルトの名無しさん
20/08/14 09:39:33.54 dCe/n24a.net


1036:デフォルトの名無しさん
20/08/14 14:59:12.49 uGqrrAzw.net
>>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で読んで行番号を表示させる

1037:デフォルトの名無しさん
20/08/14 21:06:33 II+YlR7/.net


1038:デフォルトの名無しさん
20/08/14 22:02:35.58 TmzvbeJo.net
>>995
ウンコみたいにダサいコードをよく晒せるな。
生きてて楽しい?

1039:デフォルトの名無しさん
20/08/14 22:14:12.37 B6QaDwta.net
未来予知乙
生きてる価値もないなw

1040:デフォルトの名無しさん
20/08/14 22:43:27 9FGl+Ien.net
低能Ruby厨か

1041:デフォルトの名無しさん
20/08/14 23:06:43.67 TmzvbeJo.net
リダイレクトカードオープン!
>>991 から >>995 へのアンカーは >>985 へリダイレクトされる!
が、Ruby爺は人格障害者だった!
精神的ダメージを受けていない!
Ruby爺がVZ爺を召喚しようとしている!
が、自分自身だったので召喚できない!
Ruby爺がダサいコードを唱え始めた!
似非プログラマーは発狂した!
歴戦のプログラマーは何も感じていない!
歴戦のプログラマーの攻撃!
Ruby爺は5のダメージ!
歴戦のプログラマーはRuby爺をやっつけた!
経験値を0exp、ゴールドを0G 手に入れた!
「何だよ無職ニートの爺かよ…」と歴戦のプログラマーは思った。

1042:デフォルトの名無しさん
20/08/14 23:10:45 SCMnTycc.net
Windows には、ini ファイルを読み書きできる、コマンド・アプリは無いの?

1043:デフォルトの名無しさん
20/08/14 23:35:08.04 LY+T9Pmp.net
EDLIN

1044:デフォルトの名無しさん
20/08/15 00:03:00.44 fUIncIgN.net


1045:デフォルトの名無しさん
20/08/15 01:45:30.34 t8slxubu.net
次スレは?

1046:デフォルトの名無しさん
20/08/15 02:14:16.82 RWxrHj8y.net
URLリンク(www.vector.co.jp)

1047:デフォルトの名無しさん
20/08/15 06:59:18.06 R7NunwzB.net
質問いいでしょうか

1048:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 632日 16時間 7分 11秒

1049:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch