【.cmd】 バッチファイルスクリプト %15 【.bat】 (967レス)
【.cmd】 バッチファイルスクリプト %15 【.bat】 http://mevius.5ch.io/test/read.cgi/tech/1663153441/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
945: デフォルトの名無しさん [] 2026/04/01(水) 19:42:08.06 ID:ncoapRgH >コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります ということはサブの中も観てそっちもコピーしろと そのときのコピー先は今日の日付のフォルダのトップで良いのか? 同じ名前で違うディレクトリだったらどうすんの? http://mevius.5ch.io/test/read.cgi/tech/1663153441/945
946: デフォルトの名無しさん [sage] 2026/04/03(金) 15:42:28.87 ID:VhpmDAAR AIはそういうことは配慮しない http://mevius.5ch.io/test/read.cgi/tech/1663153441/946
947: デフォルトの名無しさん [] 2026/04/06(月) 17:47:12.77 ID:5bemAIxm >>944 フォルダ名はバッチファイル内で指定する robocopyはオプションに/MIRなどを指定する http://mevius.5ch.io/test/read.cgi/tech/1663153441/947
948: デフォルトの名無しさん [age] 2026/04/13(月) 10:04:41.11 ID:3POC0siT 以下のバッチでは全角文字を入力されてしまうと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 goto :ReLoop :EndLoop if %DrvLength% NEQ 1 goto UsbRecovery if "%UsbMemory%"=="0" goto UsbRecovery REM 以下同様に数字キーと A B C ドライブ文字除外 set "choice=x" set /P choice="USBメモリのドライブ文字は "%UsbMemory%:" で合っていますか?(y/n) " http://mevius.5ch.io/test/read.cgi/tech/1663153441/948
949: デフォルトの名無しさん [sage] 2026/04/13(月) 10:33:11.80 ID:zNJlHy3K ドライブ文字が正しいのか判別するためにバイト数でチェックする事に拘らなければ良いと思うよ 所詮26文字しかないのだから http://mevius.5ch.io/test/read.cgi/tech/1663153441/949
950: デフォルトの名無しさん [sage] 2026/04/13(月) 10:59:30.02 ID:0qPiOmXR choice使えば http://mevius.5ch.io/test/read.cgi/tech/1663153441/950
951: デフォルトの名無しさん [sage] 2026/04/13(月) 15:09:59.92 ID:2xoIGF5V 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 :start http://mevius.5ch.io/test/read.cgi/tech/1663153441/951
952: 948 [sage] 2026/04/13(月) 21:54:35.01 ID:3POC0siT >>951 さん ありがとう! それでいけました。 アスキーコード数値にできないか?とか沼りかけていたので助かりました。 http://mevius.5ch.io/test/read.cgi/tech/1663153441/952
953: デフォルトの名無しさん [] 2026/04/15(水) 19:54:56.95 ID:r6S5gYIq 入力チェックの概念がないことに驚く http://mevius.5ch.io/test/read.cgi/tech/1663153441/953
954: デフォルトの名無しさん [] 2026/04/15(水) 19:57:02.54 ID:r6S5gYIq >>952 変数に初期値を設定するのは悪習慣 http://mevius.5ch.io/test/read.cgi/tech/1663153441/954
955: デフォルトの名無しさん [] 2026/04/15(水) 19:57:51.97 ID:r6S5gYIq >>948 はよく見るとネストしまくっているド素人だな http://mevius.5ch.io/test/read.cgi/tech/1663153441/955
956: デフォルトの名無しさん [sage] 2026/04/16(木) 03:45:00.88 ID:Tn//Fa1q choiceの現実的な使い方 for /f "usebackq" %%i in (`choice /n /c QABC`) do set item=%%~i http://mevius.5ch.io/test/read.cgi/tech/1663153441/956
957: 948 [sage] 2026/04/16(木) 12:12:15.01 ID:2FlBY5v4 >955 ド素人です。 >>954 そうなんですか? でも変数に初期値を設定しないと 書いた>948元のベースで複数文字の入力分岐もやっています。 入力後にメニュー戻りした次に未入力でエンターすると前回入力が残って同じ処理に入ってしまう なので変数に初期値を設定するようにしています。 >>956 それは単1文字以外に'CLR'とか複数文字入力混在の分岐もいけますか? http://mevius.5ch.io/test/read.cgi/tech/1663153441/957
958: デフォルトの名無しさん [sage] 2026/04/16(木) 23:38:20.04 ID:UfvpdfWz 偉そうにいちゃもん付けてる奴はスルーでいいから http://mevius.5ch.io/test/read.cgi/tech/1663153441/958
959: デフォルトの名無しさん [sage] 2026/04/18(土) 01:51:29.77 ID:wodX6Uui 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したりブロック内で処理が完結するならどちらかだけでいい。直後は暗黙的に逆の処理だからね 自分の場合、&&はしないことが多い http://mevius.5ch.io/test/read.cgi/tech/1663153441/959
960: デフォルトの名無しさん [sage] 2026/04/19(日) 09:20:07.23 ID:wKsrhzcO 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 http://mevius.5ch.io/test/read.cgi/tech/1663153441/960
961: デフォルトの名無しさん [age] 2026/04/20(月) 21:23:41.47 ID:UVl60nvN >959 2バイト文字込み判別はぐっちゃになりそうですよねー >>960 ありがとうございます。 そして全く理解が追い付いていないので質問ですが C:WinOS System(SATA SSD) , D:USBメモリ , W:PCIeスロット増設 NVMe SSD というドライブ構成例で実行すると ドライブを選択 [DW]: (W:はリムーバブル設定にはしていないのですが) Cを除いて表示されます。 3行目%%A%〜%%Zから%%Cを除くと[D]だけとなり ドライブを選択 [D]: 3行目%%A%〜%%Zから%%A%%B%%Cを除くと[C=]になります。 ドライブを選択 [C=]: 特定のドライブ文字'ABC'を除外して'C'を入力したら echo [ c ] キャンセル: メインメニューに戻る if "%drv%"=="C" goto MainMenu 飛ばせるようにするにはどうしたら良いのでしょうか? 専門板に思い切ってファイルを晒すにはド素人ソースで躊躇われ 今は >951 系をベースにset前 fsutil fsinfo drives 追加で有効ドライブ表示足してお茶濁し中・・・ http://mevius.5ch.io/test/read.cgi/tech/1663153441/961
962: デフォルトの名無しさん [sage] 2026/04/20(月) 22:06:10.26 ID:ghfl+cS9 環境Win11 for変数の割り当てmapがいつの間にかShift-JIS(ANSI)からUnicodeにこっそり仕様変更されてるみたいなんだけどいつからなのか分かる人居る? Win10の途中辺り? http://mevius.5ch.io/test/read.cgi/tech/1663153441/962
963: デフォルトの名無しさん [] 2026/04/20(月) 22:21:00.83 ID:ghfl+cS9 >>961 > 3行目%%A%〜%%Zから%%A%%B%%Cを除くと[C=]になります。 そこ除いたせで drv が空になって、call set "drv=%%drv:%SystemDrive::=%=%%" で%SystemDrive::=% と=だけ残ってdrvに"C="がsetされた結果だね Cドライブ消さないなら call set "drv=%%drv:%SystemDrive::=%=%%" の行を削除するか 以下みたいに for /f "tokens=1*" %%a in ('fsutil fsinfo drives') do set "drv=%%b" set "drv=%drv:\=%" set "drv=%drv::=%" set "drv=%drv: =%" if "%drv%"=="" echo ERROR: 以下同じ ドライブの:も邪魔なら以下の%%aの:も消せばいいよ for /f %%a in ('choice /c %drv% /n') do set drv=%%a http://mevius.5ch.io/test/read.cgi/tech/1663153441/963
964: デフォルトの名無しさん [sage] 2026/04/20(月) 22:52:47.63 ID:ghfl+cS9 システムドライブがC:ではない環境は考慮しなくてもいいのかな? Cドライブを必ず在るものとしてCにキャンセルを割り当てるならそのままでいいけど ドライブにCが無い環境だとCが出ないから、その場合の処理を追加して選択にCを追加するか、キャンセル出来ない仕様になる そう面倒でもないけれど、バッチはある程度の割り切りも必要だと思うよ アレもコレも対策してたら数行で済む簡単なバッチが数百行に膨れ上がるからね http://mevius.5ch.io/test/read.cgi/tech/1663153441/964
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 3 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.023s