【.cmd】 バッチファイルスクリプト %16 【.bat】at TECH
【.cmd】 バッチファイルスクリプト %16 【.bat】 - 暇つぶし2ch21:デフォルトの名無しさん
26/06/23 15:57:20.48 MzQH8l/s.net
リムーバブルドライブかどうか調べる方法は前スレ最後のほうで出てたね

22:デフォルトの名無しさん
26/06/23 18:35:27.88 pd6+30K0.net
やってみたら一発でまともなバッチを生成してきて拍子抜けというか変な笑い出たわw
少し前は1度目はもう少しツッコミどころのあるモノを生成して来てたと思うんだが
まあロジック的には単純だからかも知れんが成長を感じさせる

23:デフォルトの名無しさん
26/06/24 10:20:08.08 JcMsLUJs.net
for /f "delims=" %a in ('fsutil fsinfo drives')do @for %b in (%a)do @for /f %c in ('fsutil fsinfo drivetype %b^|findstr "リムーバブル Removable"')do @copy /v /y %ctest\test.txt

24:別解
26/06/25 05:43:29.93 zzHamOuj.net
fsutil総当り: for %a in (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)do @fsutil fsinfo drivetype %a: 2>nul|findstr "リムーバブル Removable">nul&© /v /y %a:test\test.txt
PS: for /f "delims=" %a in ('powershell -nop -c "(gcim Win32_LogicalDisk -f 'DriveType=2').DeviceID"')do @copy /v /y %a\test\test.txt
diskpart on bat
@echo off
setlocal
:: 管理者権限のチェックと昇格(UAC呼び出し)・引数は引き継がない(別ウインドウになるので強制pause)
fltmc >nul || (powershell -nop -c "start \"%~f0\" -verb runas" &exit /b)
cd /d "%~dp0"

:: 第1引数に -np が無ければ終了前にpause。別のバッチからcallする場合などは-np付けて実行すればpauseしない
if not "%~1"=="-np" set "_pause=&pause"&set "pause_=pause&"

:: diskpart用一時ファイル作成
echo list volume>dp_livol.txt

:: diskpartを/sオプションで一時スクリプトを与えて実行しドライブレターを取得
set i=0
for /f "tokens=3" %%a in ('diskpart /s dp_livol.txt^|findstr "リムーバブル Removable"') do set /a i+=1 &set drv=%%a

:: 一時ファイル削除
del dp_livol.txt

:: ERROR判定
if %i% LEQ 0 echo ERROR: 対象が見付かりませんでした>&2 %_pause% &exit /b 1
if %i% EQU 1 echo %drv%:%_pause% &exit /b 0
if %i% GEQ 2 echo ERROR: 対象が複数存在します>&2 %_pause% &exit /b 1

:: EQU 1 の行を削除かコメントアウトすればコピー実行
copy /v /y %drv%:\test\test.txt && %pause_%exit /b 0
%pause_%exit /b 1
>>23が1番速い

25:デフォルトの名無しさん
26/06/25 05:56:10.52 zzHamOuj.net
©に化けた箇所
>nul && copy /v /y

26:デフォルトの名無しさん
26/06/25 07:46:35.52 JkilqUFW.net
なんという怠慢

Microsoftが提供するAIターミナル「Intelligent Terminal」は、現時点で.batファイル(Windowsコマンドプロンプト/cmd.exe)には正式対応していません。リリース当初はPowerShellのみの対応でしたが、最新のアップデート(バージョン v0.1.1681)により、新たに Bash(Linux環境)およびWSL Bash(Windows Subsystem for Linux)の自動エラー検出・修正提案機能 がサポートされました。サポート状況のまとめ🟢 PowerShell:初期から対応。🟢 Bash / WSL Bash:最新アップデート(v0.1.1681)で対応。❌ Command Prompt (.bat / cmd.exe):現時点ではAIエージェントによる自動検出・修正の対象外。

27:デフォルトの名無しさん
26/06/26 05:41:04.48 yb2J70RD.net
wmic
for /f "tokens=2 delims==" %a in ('wmic logicaldisk where "drivetype=2" get deviceid /value 2^>nul')do @for %b in (%a)do @echo %b
for /f %a in ('wmic logicaldisk where "drivetype=2" get deviceid 2^>nul^|find ":"')do @echo %a
下の方が可読性は良いが、上の方が6~11ms速い
50回平均を何度も計測して毎回この差だから誤差では無いはず
fsutil PS diskpart wmic で一通り揃ったのかな。他のやり方ってある?

28:デフォルトの名無しさん
26/06/26 06:00:55.62 g4L9w2RV.net
wmicて廃止予定じゃん

29:デフォルトの名無しさん
26/06/28 06:18:34.84 6zOHDBuU.net
最速は総当りだった。
@for /f "delims=" %%a in ('fsutil fsinfo drives')do @for %%b in (%%a)do @fsutil fsinfo drivetype %%b|findstr "リムーバブル Removable">nul&&@echo %%~db
総実行時間: 5499.1948 ms 50 回
平均実行時間: 109.983896 ms / 回

@for /f %%a in ('mountvol^|find ":\"')do @fsutil fsinfo drivetype %%a|findstr "リムーバブル Removable">nul&&@echo %%~da
総実行時間: 4770.8201 ms 50 回
平均実行時間: 95.416402 ms / 回

@for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do @if exist %%a:\ fsutil fsinfo drivetype %%a:|findstr "リムーバブル Removable">nul&&@echo %%a:
総実行時間: 3183.7575 ms 50 回
平均実行時間: 63.67515 ms / 回

@for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z)do @fsutil fsinfo drivetype %%a:|findstr "リムーバブル Removable">nul&&@echo %%a:
総実行時間: 18715.7432 ms 50 回
平均実行時間: 374.314864 ms / 回

fsutilにドライブレターを渡す前に if exist するだけで劇的に速くなった

30:デフォルトの名無しさん
26/06/28 09:26:33.79 /+1cRAgo.net
>>29
解説お願い

31:デフォルトの名無しさん
26/06/28 11:31:00.04 6zOHDBuU.net
せめてどこの解説が欲しいのかくらい書いてよ
というか解説が必要なほど難解なことしてないし無いでしょ
何をやってるのか分からないのなら、コマンドをバラしてコマンドプロンプトに打ち込んで出力がどう変化していってるのか順番に追って確認すれば良いだけ
fsutil fsinfo drives
for /f "delims=" %a in ('fsutil fsinfo drives')do @echo %a
for /f "delims=" %a in ('fsutil fsinfo drives')do @for %b in (%a)do @echo %b
for /f "delims=" %a in ('fsutil fsinfo drives')do @for %b in (%a)do @fsutil fsinfo drivetype %b
for /f "delims=" %a in ('fsutil fsinfo drives')do @for %b in (%a)do @fsutil fsinfo drivetype %b|findstr "リムーバブル Removable"

因みにこれ
for /f "tokens=1*" %a in ('fsutil fsinfo drives')do @for %c in (%b)do @fsutil fsinfo drivetype %c|findstr "リムーバブル Removable">nul&&@echo %~dc
"tokens=1*" で ドライブ: を捨てるようにしたら少しだけ速くなった。90.636502 ms 2位に浮上

32:デフォルトの名無しさん
26/06/29 15:06:52.55 zanSJGzx.net
>30
>>29
>>31
USBのドライブ名が表示されるけど
コレをどの様にしてコピーのパスに加工するの?

33:デフォルトの名無しさん
26/06/29 15:21:05.27 +AKt8FPZ.net
パス・ファイル名は分かってるんだから
ドライブ名をそれに足してあげるだけじゃん

34:デフォルトの名無しさん
26/06/29 16:42:19.00 S2ohl1vA.net
オムツ取れてない子なのかな
もうこうやってzまでか10個くらいだけ並べて書いておきなよ
ドライブ10個なんてそうそう無いだろうからこれで十分
コピー出来ないだけで何も実害無いからさ
copy /y d:ファイルパス 2>nul
copy /y e:ファイルパス 2>nul
copy /y f:ファイルパス 2>nul
copy /y g:ファイルパス 2>nul
copy /y h:ファイルパス 2>nul
copy /y i:ファイルパス 2>nul
copy /y j:ファイルパス 2>nul
copy /y k:ファイルパス 2>nul
copy /y l:ファイルパス 2>nul
copy /y m:ファイルパス 2>nul

35:デフォルトの名無しさん
26/06/29 17:23:19.58 +AKt8FPZ.net
せめてファイルの存在チェックぐらいかましたらどうだろうか

36:デフォルトの名無しさん
26/06/29 17:26:13.95 +AKt8FPZ.net
俺はUSB HDDが6台、仮想CD/DVDドライブが3台あるんで結局は存在チェック必須なんだよね

37:デフォルトの名無しさん
26/06/29 17:43:43.66 S2ohl1vA.net
ファイルが無くてもバグって別のファイルをコピーしたりするわけじゃないし、指定されたファイルが見つかりません。とエラーになるだけ
copy コマンドが存在チェックを兼ねてると思えばいいじゃない
同一のパスとファイル名で複数のドライブに存在してたとしても同じファイルなら問題ない
バージョンが違うと問題だが

38:デフォルトの名無しさん
26/06/30 00:41:01.60 5Gts0GU3.net
>>33
それってどれ

39:デフォルトの名無しさん
26/06/30 05:25:40.90 IpdDiED/.net
境界知能の人には >>34 のを少し手直ししたこれくらいの方が分かりやすいのではないか?

:: cpy_usbmemory.bat
@echo off
(
copy /y "d:%~1" && goto N
copy /y "e:%~1" && goto N
copy /y "f:%~1" && goto N
copy /y "g:%~1" && goto N
copy /y "h:%~1" && goto N
copy /y "i:%~1" && goto N
copy /y "j:%~1" && goto N
copy /y "k:%~1" && goto N
copy /y "l:%~1" && goto N
copy /y "m:%~1" && goto N
) >nul 2>&1
:N
exit /b %errorlevel%

親バッチから上のcpy_usbmemory.batをcallで呼び出す
コピーしたいファイルのドライブ部分を除いた"パス+ファイル名"を引数にする
以下の例はコピーしたいファイルが "E:test\test.txt" の場合
call cpy_usbmemory.bat \test\test.txt && echo test.txt コピー成功|| echo test.txt コピー失敗

40:デフォルトの名無しさん
26/06/30 19:12:45.41 VxizrE9Q.net
URLリンク(archive.md)
isb人事

41:デフォルトの名無しさん
26/07/08 14:15:54.88 S68PL55m.net
robocopyよく使っててその中でmaxageを使うけど
古いファイルを
入ってるフォルダから
別のフォルダに移動しただけだと引っかからない
これもコピーできる都合の良いオプションありますか?
あったら教えてください


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