2012-04-13 8 views
2

Ich versuche, eine Backup-Batch-Datei zu erstellen, um die Wartung von Acronis True Image und Backup zu automatisieren.Batch-Datei und variable USB-Laufwerksbuchstaben

Die USB-Laufwerksbuchstaben ändert sich abhängig von welcher Maschine ich das Sichern und/oder wie viele Geräte angeschlossen sind und die Laufwerksbuchstaben mit ...

Mein Charge liegt in C:\ Meine Charge ATI nennen. ATI-Dumps ein Bild auf C:\ Der Ansatz sieht dann für meine externe basierend auf sein Volumen Seriennummer wie folgt:

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, diese Arbeit ganz gut, aber was ich brauchen jetzt ist etwas entlang der Linien von;

Finden Sie das richtige externe Gerät basierend auf der Seriennummer. (Wie oben) Ergreifen Sie den richtigen Laufwerksbuchstaben und wandeln Sie ihn in eine Variable um. Break aus der FOR IN DO Schleife, wenn der Laufwerksbuchstabe gefunden wird und machen es zu einer Variablen. Verwenden Sie die Variable, um zu prüfen, ob ein Ordner existiert. Wenn der Ordner nicht existiert, erstellen Sie ihn. Wenn der Ordner vorhanden ist, überprüfen Sie, ob MyBackup.tib innerhalb vorhanden ist. Wenn ja, löschen Sie die Datei. CHDIR oder soetwas zurück, wo der Stapel liegt, (C:\) und MOVE die neu erstellte Sicherung in den Ordner auf der externen.

Ich komme gerade zehn Stunden damit, an diesem Problem zu arbeiten, und ich bin nicht näher am Finden der richtigen Syntax/Befehle als ich am Anfang war.

BITTE, können Sie helfen !? Ich gebe dir einen Keks, lol!

ich Windows 7 Ultimate renne, ob das hilft ...

+0

Powershell oder MSys eine Option? –

+0

Nein, ich möchte nichts installieren. Ich werde diese Charge auf Freundes- und Familienmaschinen verwenden, also ... – S3NTYN3L

Antwort

6

Die Seriennummer ist eine Zahl in hexadezimaler Schreibweise (mit einem Schuss in viel geworfen wie Kommas als Tausendertrennzeichen in Dezimalzahlen verwendet werden).

WMIC volume get driveLetter, serialNumber kann verwendet werden, um eine Liste aller Laufwerksbuchstaben mit ihrer Seriennummer in Dezimalschreibweise zu erhalten. Ihre Seriennummer von 30BC-F5A4 entspricht der Dezimalzahl 817690020. Ich konvertierte Ihre hexadezimale SN in dezimale Form mit dem folgenden Befehl in der Befehlszeile: set /a 0x30BCF5A4.

Der folgende Befehl wird also eine Variable auf den Laufwerksbuchstaben (mit Doppelpunkt) Ihres externen Laufwerks setzen.

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 

Ich verstehe nicht, wo der Ordnername herkommt, dass Sie sprechen. Ich nehme an, Sie haben eine Variable mit dem Wert irgendwie definiert. Ich werde einfach die Variable "Ordner" nennen.

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

können Sie den MOVE-Befehl verwenden, um Ihre neu erstellte Backup in den Ordner auf dem externen Laufwerk zu bewegen, automatisch alle vorhandenen Backup überschrieben wird, wenn es bereits vorhanden ist.

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

Sie könnten den ursprünglichen 'SET SN'-Befehl belassen und eine Konvertierung danach hinzufügen:' SET/A SN = 0x% SN: - =% '. –

+1

Hoppla: 'wenn nicht definiert"% extDrive% \% Ordner% \ "mkdir"% extDrive% \% Ordner% "'. Du meintest 'wenn nicht existiert ...', oder? –

+0

Perfekt, danke! – S3NTYN3L

1

Sie könnten für den Laufwerksbuchstaben fragen, wie folgt aus:

einige Fotos, die Sie brauchen, sagen zu sichern sind im Verzeichnis a \ b \ c auf unserer Fahrt, dessen Brief Änderungen zwischen Computern.Und möchten Sie Ihre Fotos sichern zu Ihrem Hauptantrieb, in das Verzeichnis x \ y \ z auf dem Hauptlaufwerk (Laufwerk 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 

Sie auch für den Weg stellen könnten sichern zu, so ...

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% 

oder beide ...

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% 

ich denke, diese Art von Niederlagen der Zweck der Automatisierung, sondern nur einen Gedanken; vielleicht wird das helfen.

Für weitere Informationen über den Befehl xcopy und Modifikatoren finden http://www.computerhope.com/xcopyhlp.htm

Für weitere Informationen über den eingestellten Befehl finden http://www.computerhope.com/sethlp.htm

0

Dies wird einfach alle USB-Laufwerke mit dem System verbunden finden.

@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

Ich war auf der Suche überall und viele Dinge ausprobieren - das ist die schnellste und einfachste Schalter Befehlszeilenoption Laufwerksbuchstaben

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 
Verwandte Themen