Batch-Variable bei Shift
Verehrte Dossiers und Stapler!
Ich stecke fest und bitte Euch um Hilfe.
Mit dem folgenden Befehl will ich Dateikopien von allen Partitionen (evtl außer C auf eine externe Festplatte speichern.
SET Log=ZwiBack.Log
SET Param=/C /R /E /H /K /Y /Q /EXCLUDE:F:\Zwi\Excludat.txt
:Schleife
SET Lw=%1
IF "%1"=="" GOTO Ende
ECHO Jetzt: Kopieren aller Dateien von Lw %Lw%
XCOPY %Lw%:\*.* N:\ZwiBack\%Lw%\ %Param% >>%Log%
SHIFT
GOTO Schleife
:Ende
(In diesem Zusammenhang unwichtige Befehle habe ich weggelassen.)
Die Variable Lw soll bei jedem Schleifendurchlauf durch einen Laufwerksbuchstaben ersetzt werden,
als da z.B. wären: F G H I J K. Ich glaube mich zu erinnern, daß ich vor etwa 25 Jahren die Variablen-Parameter
(Laufwerksbuchstaben) in eine Text- oder Bat-Datei geschrieben habe, damit ich bei öfter einmal vorkommenden
Änderungen in der Laufwerksstruktur nicht jedes Mal in meiner Kopierdatei an vielen Stellen ändern muß. Das wäre
zu fehleranfällig. Aber wie habe ich das gemacht? Und wie ist die genaue Syntax? Und was mache ich dann
mit der Datei? Wohin kommen dann die Variablen, damit sie in meiner Kopierdatei (siehe oben) "geshiftet" werden?
Leider habe
ich keine Unterlagen mehr dazu, und meine Erinnerung ist nur vage.
Wie hätte ich damals beim Ausmisten ahnen können, daß ich im achtzigsten Jahrzehnt noch einmal Lust oder
Notwendigkeit verspüren würde, unter die Batcher zu gehen?!
Bitte keine Verweise auf MS-Anleitungen oder abstrakte Erklärungen, die kapiere ich nicht mehr. Ich bitte um praktische Hilfe,
wenn es geht, durch Vorkupfern zum Abkupfern. Danke einstweilen.
KH in D
Ich stecke fest und bitte Euch um Hilfe.
Mit dem folgenden Befehl will ich Dateikopien von allen Partitionen (evtl außer C auf eine externe Festplatte speichern.
SET Log=ZwiBack.Log
SET Param=/C /R /E /H /K /Y /Q /EXCLUDE:F:\Zwi\Excludat.txt
:Schleife
SET Lw=%1
IF "%1"=="" GOTO Ende
ECHO Jetzt: Kopieren aller Dateien von Lw %Lw%
XCOPY %Lw%:\*.* N:\ZwiBack\%Lw%\ %Param% >>%Log%
SHIFT
GOTO Schleife
:Ende
(In diesem Zusammenhang unwichtige Befehle habe ich weggelassen.)
Die Variable Lw soll bei jedem Schleifendurchlauf durch einen Laufwerksbuchstaben ersetzt werden,
als da z.B. wären: F G H I J K. Ich glaube mich zu erinnern, daß ich vor etwa 25 Jahren die Variablen-Parameter
(Laufwerksbuchstaben) in eine Text- oder Bat-Datei geschrieben habe, damit ich bei öfter einmal vorkommenden
Änderungen in der Laufwerksstruktur nicht jedes Mal in meiner Kopierdatei an vielen Stellen ändern muß. Das wäre
zu fehleranfällig. Aber wie habe ich das gemacht? Und wie ist die genaue Syntax? Und was mache ich dann
mit der Datei? Wohin kommen dann die Variablen, damit sie in meiner Kopierdatei (siehe oben) "geshiftet" werden?
Leider habe
ich keine Unterlagen mehr dazu, und meine Erinnerung ist nur vage.
Wie hätte ich damals beim Ausmisten ahnen können, daß ich im achtzigsten Jahrzehnt noch einmal Lust oder
Notwendigkeit verspüren würde, unter die Batcher zu gehen?!
Bitte keine Verweise auf MS-Anleitungen oder abstrakte Erklärungen, die kapiere ich nicht mehr. Ich bitte um praktische Hilfe,
wenn es geht, durch Vorkupfern zum Abkupfern. Danke einstweilen.
KH in D
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 123558
Url: https://administrator.de/contentid/123558
Ausgedruckt am: 28.03.2024 um 10:03 Uhr
2 Kommentare
Neuester Kommentar
Hi,
warum so kompliziert? Der FOR-Befehl enthält eine Aufzählung der zu sichernden Laufwerke, das SHIFT kannst du dir damit sparen.
Wenn du unbedingt mit SHIFT arbeiten möchtest, musst du die Laufwerke als Parameter an die Batch übergeben.
Der EXCLUDE-Parameter erwartet Objekte, keine einzulesende Dateiliste.
warum so kompliziert? Der FOR-Befehl enthält eine Aufzählung der zu sichernden Laufwerke, das SHIFT kannst du dir damit sparen.
SET Log=ZwiBack.Log
SET Param=/C /R /E /H /K /Y /Q
Rem /EXCLUDE:F:\Zwi\Excludat.txt geht nicht, falsche Syntax. Hilfe mit XCOPY /?
for %%i in (F H I J K) do XCOPY %%i:\*.* N:\ZwiBack\%%i\ %Param% >>%Log%
Wenn du unbedingt mit SHIFT arbeiten möchtest, musst du die Laufwerke als Parameter an die Batch übergeben.
Der EXCLUDE-Parameter erwartet Objekte, keine einzulesende Dateiliste.
Hallo KlausInD,
Das mit der Exclude Funktioniert bei mir.
mit der Variable COPYCMD kannst Du das Verhalten von COPY XCOPY und MOVE Voreinstellen und brauchst die Variable nicht in den Befehl zu schreiben.
Diese Version wird Dir aber nur Deine ZwiBack.Log Vollknallen.
Wenns dann noch extra kopieren soll dann die XCOPY zeile ohne
direkt unter die erste Xcopy-Zeile setzen also noch vor dem SHIFT
Gruß Phil
Das mit der Exclude Funktioniert bei mir.
mit der Variable COPYCMD kannst Du das Verhalten von COPY XCOPY und MOVE Voreinstellen und brauchst die Variable nicht in den Befehl zu schreiben.
Diese Version wird Dir aber nur Deine ZwiBack.Log Vollknallen.
Wenns dann noch extra kopieren soll dann die XCOPY zeile ohne
%Log%
@echo off
SET Log=ZwiBack.Log
:: copycmd beeinflusst das Verhalten vom xcopy Befehl ohne die Variable in der Befehlszeile nochmals anzugeben
SET COPYCMD=/C /R /E /H /K /Y /Q /EXCLUDE:F:\Zwi\Excludat.txt
:: Alles was hinter dem Name der Sprungmarke zusammenhängend geschrieben ist
:: oder mit Gänsefüsschen Umschlossen wird als EIN Parameter Übergeben. Also sind in Deinem Fall die Laufwerke.
call :Schleife F G H I J K
goto :Ende
:Schleife
IF "%1"=="" GOTO :eof
PushD %1:\
ECHO Jetzt: Kopieren aller Dateien von Lw %1
XCOPY *.* N:\ZwiBack\%1\ >>%Log%
SHIFT
PopD
GOTO Schleife
:Ende
set COPYCMD=&:: Wenn Die Batch hier noch Weitergeht
Gruß Phil