6: 【.cmd】 バッチファイルスクリプト %15 【.bat】 (951)

レス数: 59

概要: robocopyを使って 1個のフォルダの中で更新されたファイルのみを今日の日付のフォルダにコピーしたい コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります 毎日毎日更新されたファイルのみ...
No.943
robocopyを使って
1個のフォルダの中で更新されたファイルのみを今日の日付のフォルダにコピーしたい
コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります
毎日毎日更新されたファイルのみを今日のフォルダに入れたい
フォルダの名前は20260402とか
アーカイブ属性使えば可能?
No.944
>943
追加情報
バッチファイルにして
日付フォルダは自動で作って
スケジューラで1日1回起動します
1日に複数回起動回避とかの異常処置はいらないです
No.945
>コピー元のフォルダにはフォルダがその中にもフォルダが沢山あります
ということはサブの中も観てそっちもコピーしろと
そのときのコピー先は今日の日付のフォルダのトップで良いのか?
同じ名前で違うディレクトリだったらどうすんの?
No.946
AIはそういうことは配慮しない
No.947
>>944

フォルダ名はバッチファイル内で指定する

robocopyはオプションに/MIRなどを指定する
No.948
以下のバッチでは全角文字を入力されてしまうと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) "
No.949
ドライブ文字が正しいのか判別するためにバイト数でチェックする事に拘らなければ良いと思うよ
所詮26文字しかないのだから
No.950
choice使えば
No.951
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