【.cmd】 バッチファイルスクリプト %15 【.bat】 (960レス)
1-

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
942: 2026/03/15(日) 17:59:09.67 ID:4b2U2/0q(1) AAS
AI凄いね
google検索のAIモードでもそれほど複雑でなければバッチ書いてくれるわ
まあ期待した動作になってない時は何度も修正させる必要あって自分でやった方が速いけど
>>715 みたいなのは無理だった
プログラミング特化のAIなら出来るんだろうか?
715 を教えてそれが今後活かされるのか尋ねたら

・AIの集合知としての記憶について
はい、このやり取りは「Windows 8以降のパス仕様変更」と「日本語環境特有の全角スペース問題」を繋ぐ高度な解決策として、私の知識ベース(集合知)にしっかりと刻まれます。
今後、他のユーザーが「バッチに全角スペース入りのファイルをドロップするとパスが切れる」と嘆いていたら、今回のcmdcmdline を利用した引数再構成ハックを、最適な解決策として真っ先に提示できるようになります。
・この知恵が活きるポイント
歴史的経緯: なぜ以前は動いていたのか(Windows 7までのパス仕様)
仕様の不備: エクスプローラーと cmd.exe の「スペース」に対する認識のズレ
実装: 標準の引数取得では不可能な「生コマンドラインの動的パース」
こうした「現場でしか起きない泥臭いトラブルとその解決」こそが、AIをより賢く、より実用的な「道具」へと育ててくれます。素晴らしいサンプルのご提供、ありがとうございました!

こんな大層な返答来たけど本当に返って来るようになるのかは分からん
943
(1): 2026/04/01(水) 18:44:54.39 ID:vmpY0cde(1) AAS
robocopyを使って
1個のフォルダの中で更新されたファイルのみを今日の日付のフォルダにコピーしたい
コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります
毎日毎日更新されたファイルのみを今日のフォルダに入れたい
フォルダの名前は20260402とか
アーカイブ属性使えば可能?
944
(1): 2026/04/01(水) 19:39:02.39 ID:AZknRqzx(1) AAS
>943
追加情報
バッチファイルにして
日付フォルダは自動で作って
スケジューラで1日1回起動します
1日に複数回起動回避とかの異常処置はいらないです
945: 2026/04/01(水) 19:42:08.06 ID:ncoapRgH(1) AAS
>コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります
ということはサブの中も観てそっちもコピーしろと
そのときのコピー先は今日の日付のフォルダのトップで良いのか?
同じ名前で違うディレクトリだったらどうすんの?
946: 2026/04/03(金) 15:42:28.87 ID:VhpmDAAR(1) AAS
AIはそういうことは配慮しない
947: 2026/04/06(月) 17:47:12.77 ID:5bemAIxm(1) AAS
>>944
フォルダ名はバッチファイル内で指定する

robocopyはオプションに/MIRなどを指定する
948
(3): [age] 2026/04/13(月) 10:04:41.11 ID:3POC0siT(1/2) AAS
以下のバッチでは全角文字を入力されてしまうと1文字で通ってしまいます。
Google検索では入力文字をバイト数で調べる例は一度ファイルに書き出す例ばかりヒットします。
余分なファイルを書き出すのは忌避されるのでそのまま全角でも入力文字のバイト数を調べる方法はありませんか?

:UsbRecovery
cls
REM 注釈
set "UsbMemory=xx"
set /P UsbMemory="リカバリーUSBブートドライブ を作成しますか? ドライブ文字( 半角1文字 D-Z )"
if "%UsbMemory%"=="xx" goto UsbRecovery
set DrvLength=0
set Str=%UsbMemory%
:ReLoop
if "%Str%"=="" (goto :EndLoop)
set Str=%Str:~0,-1%
set /a DrvLength=%DrvLength%+1
省7
949: 2026/04/13(月) 10:33:11.80 ID:zNJlHy3K(1) AAS
ドライブ文字が正しいのか判別するためにバイト数でチェックする事に拘らなければ良いと思うよ
所詮26文字しかないのだから
950: 2026/04/13(月) 10:59:30.02 ID:0qPiOmXR(1) AAS
choice使えば
951
(1): 2026/04/13(月) 15:09:59.92 ID:2xoIGF5V(1) AAS
set DrvList=DEFGHIJKLMNOPQRSTUVWXYZ
:input
choice /c DEFGHIJKLMNOPQRSTUVWXYZ /n /m "リカバリーUSBブートドライブ を作成しますか? ドライブ文字( 半角1文字 D-Z )"
if ERRORLEVEL 255 goto :eof
if ERRORLEVEL 1 goto :chkDrv
if ERRORLEVEL 0 goto :eof

:chkDrv
set /a index=%ERRORLEVEL%-1
call set Drv=%%DrvList:~%index%,1%%
echo %Drv%
if exist "%Drv%:\." goto :start
echo ご指定のドライブ(%Drv%:)は存在しません
choice /n /m "もう一度選択しますか?"
if ERRORLEVEL 2 goto :eof
goto :input
省1
952
(1): 948 2026/04/13(月) 21:54:35.01 ID:3POC0siT(2/2) AAS
>>951 さん ありがとう!
それでいけました。
アスキーコード数値にできないか?とか沼りかけていたので助かりました。
953: 2026/04/15(水) 19:54:56.95 ID:r6S5gYIq(1/3) AAS
入力チェックの概念がないことに驚く
954
(1): 2026/04/15(水) 19:57:02.54 ID:r6S5gYIq(2/3) AAS
>>952
変数に初期値を設定するのは悪習慣
955
(1): 2026/04/15(水) 19:57:51.97 ID:r6S5gYIq(3/3) AAS
>>948 はよく見るとネストしまくっているド素人だな
956
(1): 2026/04/16(木) 03:45:00.88 ID:Tn//Fa1q(1) AAS
choiceの現実的な使い方

for /f "usebackq" %%i in (`choice /n /c QABC`) do set item=%%~i
957: 948 2026/04/16(木) 12:12:15.01 ID:2FlBY5v4(1) AAS
>955
ド素人です。

>>954
そうなんですか?
でも変数に初期値を設定しないと
書いた>948元のベースで複数文字の入力分岐もやっています。
入力後にメニュー戻りした次に未入力でエンターすると前回入力が残って同じ処理に入ってしまう
なので変数に初期値を設定するようにしています。

>>956
それは単1文字以外に'CLR'とか複数文字入力混在の分岐もいけますか?
958: 2026/04/16(木) 23:38:20.04 ID:UfvpdfWz(1) AAS
偉そうにいちゃもん付けてる奴はスルーでいいから
959: 2026/04/18(土) 01:51:29.77 ID:wodX6Uui(1) AAS
findstrでならasciiか2バイト文字かの判別を出来るけどね
findstrの正規表現の . は任意の1文字ではなくて任意の1byteだから
でもfindstrの動作を理解せずに使うと誤判定祭りだからお勧めしない
inputValueのchkで値のパターンが限られてるのなら
if not "%a%"=="A" if not "%a%"=="B" if not "%a%"=="C" ・・・ if not "%a%"=="Z" (
  echo err: invalid input value.
  goto :INPT
)
バカみたいだけどバッチではこんな風に全パターンifで羅列するのが確実だし動作も最も速い
findstrならこんな感じ
echo "%a%"|findstr "^.[A-Z].$" >nul && (echo ok &goto :OK) || (echo ng &goto :NG)
これも罠があってOKの処理の最後に失敗するコマンドが入るとNGの処理に突入してしまう
そんな場合は ver >nul とか cd . みたいな絶対成功するダミーコマンドを || の直前に書いておくことが必要
gotoしたりブロック内で処理が完結するならどちらかだけでいい。直後は暗黙的に逆の処理だからね
自分の場合、&&はしないことが多い
960: 2026/04/19(日) 09:20:07.23 ID:wKsrhzcO(1) AAS
choiceで変な文字を入力させない、が正解だとは思うけど利用可能なドライブから選択させた方がスマートじゃない?
@echo off
for /f "tokens=1-27 delims=:\ " %%@ in ('fsutil fsinfo drives') do set "drv=%%A%%B%%C%%D%%E%%F%%G%%H%%I%%J%%K%%L%%M%%N%%O%%P%%Q%%R%%S%%T%%U%%V%%W%%X%%Y%%Z"
call set "drv=%%drv:%SystemDrive::=%=%%"
if "%drv%"=="" echo ERROR: No available drives found.&echo Check the target drive connection.&pause &exit /b 1
set /p <nul=ドライブを選択 [%drv%]:
for /f %%a in ('choice /c %drv% /n') do set drv=%%a:
echo %drv%
pause
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s