2012-04-13 81 views
2

我試圖創建一個備份批處理文件來自動執行Acronis True Image和備份維護。批處理文件和可變USB驅動器號

取決於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新創建的備份到外部文件夾中。

我在這個問題上直接工作了十個小時,我並沒有比我在開始時更接近找到正確的語法/命令。

請問,你能幫忙嗎? 我給你一個餅乾,哈哈!

我運行Windows 7旗艦版是否有幫助?

+0

的PowerShell或MSYS的選項? – 2012-04-13 19:44:07

+0

不,我想遠離安裝任何東西。我將在朋友和家庭計算機上使用此批處理,所以... – S3NTYN3L 2012-04-13 19:45:22

回答

6

的序列號爲十六進制數字(與拋出很像逗號用作十進制數千位分隔符破折號)。

WMIC volume get driveLetter, serialNumber可用於以十進制表示法獲得所有驅動器號的序列號列表。您的30BC-F5A4的序列號等於十進制817690020.我使用命令行上的以下命令將您的十六進制SN轉換爲十進制形式: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 

我不明白你說的文件夾名稱的來源。我假設你有一個變量與定義的值不知何故。我只是簡單地命名變量「文件夾」。

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

可以使用MOVE命令到新創建的備份移動到文件夾的外部驅動器,自動覆蓋任何現有的備份,如果它已經存在。

move /y "c:\MyBackup.tib" "%extDrive%\%folder%\" 
+0

您可以保留原始的'SET SN'命令並在其後添加轉換:SET/A SN = 0x%SN: - =%'。 – 2012-04-14 14:44:56

+1

糟糕:'如果未定義'%extDrive%\%文件夾%\「mkdir」%extDrive%\%文件夾%「'。你的意思是「如果不存在......」,對嗎? – 2012-04-14 14:49:17

+0

完美,謝謝! – S3NTYN3L 2012-04-14 16:21:44

1

您可以要求盤符,這樣的:

說出一些你需要備份的照片是在我們的目錄驅動器上的A \ B \ C,其信計算機之間的變化。而且,你要備份你的照片到你的主驅動器,以目錄X \ Y \ Z^ 主驅動器(驅動器C :)

set /p Path="Enter the drive letter for your drive on this computer. No symbols, just the capital letter" 
xcopy /e /v %Path%:\a\b\c c:\x\y\z 

你甚至可以要求備份的路徑,像這樣...

set /p Path="Enter the drive letter for your removable drive on this computer. No symbols, just the capital letter." 
set /p PathBackUp="Enter the path to where you want your data to be backed up on this computer. Start with a backslash." 
set /p BackupDrive="Enter the drive letter for your data to be backed up to on this computer. No symbols, just the capital letter." 
xcopy /e /v %Path%:\a\b\c %BackupDrive%:%PathBackUp% 

或兩個...

set /p Path="Enter the drive letter for your removable drive on this computer. No symbols, just the capital letter." 
set /p DataPath="Enter the path where your data to be backed up is. Start with a backslash, and don't include the drive letter. 
set /p PathBackUp="Enter the path to where you want your data to be backed up on this computer. Start with a backslash, and don't include the drive letter." 
set /p BackupDrive="Enter the drive letter for your data to be backed up to on this computer. No symbols, just the capital letter." 
xcopy /e /v %Path%:%DataPath% %BackupDrive%:%PathBackUp% 

我想這種失敗的自動化的目的,而僅僅是一個想法;也許這會有所幫助。

有關xcopy命令和修飾符的更多信息,請參閱http://www.computerhope.com/xcopyhlp.htm

有關set命令的詳細信息,請參閱http://www.computerhope.com/sethlp.htm

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. 
     ) 
     ) 
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 
相關問題