2

CognosTrueImageとバックアップのメンテナンスを自動化するためのバックアップバッチファイルを作成しようとしています。

USBドライブ文字は、バックアップしているマシンや接続されているデバイスの数、およびドライブ文字を使用しているマシンによって異なります...

私のバッチは私のバッチに存在し、C:\ ATIを呼び出します。ATIは画像をC:\ バッチにダンプし、次のようにボリュームのシリアル番号に基づいて外部を検索します。

SET SN=30BC-F5A4
SET found=

0>NUL SET /P=Searching for external drive...
TIMEOUT 3 /NOBREAK >NUL

FOR %%N IN (D E F G H I J K L M O P Q R S T U V W X Y Z) DO (
IF defined found CALL :MOVE
VOL %%N: 2>NUL | FIND "%sn%" >NUL && CALL :MOVE %%N
)

ECHO  Fail^^!
TIMEOUT 3 /NOBREAK >NUL

ECHO.
ECHO Connect it now and cancel "Autoplay".
TIMEOUT 3 /NOBREAK >NUL

ECHO.
ECHO Press any key to try again...
PAUSE >NUL

CALL: EXTERNAL



:: ***MOVE BACKUP***

:MOVE

OK、それは問題なく機能しますが、私が今必要としているのは、次のようなものです。

シリアル番号に基づいて正しい外部デバイスを見つけます。(上記のように)正しいドライブ文字を取得し、それを変数に変換します。FOR IN DOドライブ文字が見つかったらループから抜け出し、変数にします。変数を使用して、フォルダーが存在するかどうかを確認します。フォルダが存在しない場合は作成してください。フォルダが存在する場合は、MyBackup.tib中に存在するかどうかを確認してください。その場合は、ファイルを削除します。 CHDIRまたは、バッチが存在する場所に戻って(C:\MOVE、新しく作成されたバックアップを外部のフォルダに戻します。

私はこの問題に10時間まっすぐ取り組んでいますが、最初のときよりも正しい構文/コマンドを見つけることに近づいていません。

お願いします、助けてくれませんか!?クッキーを差し上げます、笑!

それが助けになるなら、私はWindows7Ultimateを実行しています...

4

5 に答える 5

6

シリアル番号は、16 進数表記の数値です (カンマが 10 進数の 3 桁ごとの区切り記号として使用されるように、ダッシュが挿入されます)。

WMIC volume get driveLetter, serialNumber10 進表記のシリアル番号を含むすべてのドライブ文字のリストを取得するために使用できます。30BC-F5A4 のシリアル番号は、10 進数の 817690020 に相当します。コマンド ラインで次のコマンドを使用して、16 進数の SN を 10 進数の形式に変換しました: set /a 0x30BCF5A4

したがって、次のコマンドは、外部ドライブのドライブ文字 (コロン付き) に変数を設定します。

set SN=817690020
set "extDrive="
for /f %%D in ('wmic volume get driveLetter^, serialNumber ^| find "%sn%"') do set extDrive=%%D
if not defined extDrive echo Error finding external drive & exit /b

あなたが話しているフォルダ名の由来がわかりません。どういうわけか値が定義された変数があると仮定しています。変数に「folder」という名前を付けるだけです。

set folder=someFolderName
if not exist "%extDrive%\%folder%\" mkdir "%extDrive%\%folder%"

MOVE コマンドを使用して、新しく作成したバックアップを外部ドライブのフォルダーに移動し、既存のバックアップが既に存在する場合は自動的に上書きすることができます。

move /y "c:\MyBackup.tib" "%extDrive%\%folder%\"
于 2012-04-14T00:35:18.553 に答える
0

私はあらゆる場所を検索し、多くのことを試していました。これは、最も速くて簡単なドライブ文字切り替えコマンド ライン オプションです。

echo off

set /p Path="Enter the Drive Letter of the source File then press enter___"

set /p Pathde="Enter the Drive Letter of the Destination File then press enter___"

echo on

COPY %path%:\Users\Dell\Desktop\test.txt %pathde%:\test.txt
于 2014-10-19T23:11:14.983 に答える
0

これにより、システムに接続されているすべての USB ドライブが検出されます。

@echo off

for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,description^,drivetype 2^>NUL`) do (

if %%l equ 2 (
echo %%i is a USB drive.
        )
        )
于 2013-11-23T03:41:16.047 に答える