sehr langen Befehl mit Batchdatei erstellen
Hallo Admins,
ich möchte gerne eine Batch erstellen lassen, in der robocopy eine lange Dateiliste übergeben wird. Dazu habe ich eine Datei, in der alle Dateinamen drin stehen.
Mit ^ kann man Zeilenumbrüche umsetzten, wie ich hier im Forum gelesen habe. Mein Versuch dazu ist:
Nur wird das ^ Zeichen nicht mit übergeben. Könnt ihr mit bitte helfen?
Vielen Dank
Manuel
ich möchte gerne eine Batch erstellen lassen, in der robocopy eine lange Dateiliste übergeben wird. Dazu habe ich eine Datei, in der alle Dateinamen drin stehen.
a.txt
b.txt
c.txt
...
Mit ^ kann man Zeilenumbrüche umsetzten, wie ich hier im Forum gelesen habe. Mein Versuch dazu ist:
@ECHO robocopy.exe %source_dir% %target_dir% /IF^>>%batch_file%
:: Export des Kopierbefehls
for /f %%k in (%dateiliste%) do ( ECHO %%k^>>%batch_file% )
@ECHO /E>>%batch_file%
Nur wird das ^ Zeichen nicht mit übergeben. Könnt ihr mit bitte helfen?
Vielen Dank
Manuel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 49294
Url: https://administrator.de/contentid/49294
Ausgedruckt am: 26.11.2024 um 16:11 Uhr
5 Kommentare
Neuester Kommentar
hi,
das zeichen ^wird zum maskieren von & verwendet dabei wird dann
statt dass & ausgeführt wird (verknüpfung von befehlen)
& bei echo blabla ^& >bla.txt ein blabla & in die txt datei geschrieben.
hört sich komisch an.. sorry ich kanns net besser formulieren
also ich dneke du musst ^^ machen damit ^ weitergegeben wird
habe das aber nicht selbst getestet....
hth, Ph
das zeichen ^wird zum maskieren von & verwendet dabei wird dann
statt dass & ausgeführt wird (verknüpfung von befehlen)
& bei echo blabla ^& >bla.txt ein blabla & in die txt datei geschrieben.
hört sich komisch an.. sorry ich kanns net besser formulieren
also ich dneke du musst ^^ machen damit ^ weitergegeben wird
habe das aber nicht selbst getestet....
hth, Ph
Moin Fremder,
ich denke, da solltest Du nicht zu viel Aufwand in diese Strategie stecken.
Du kannst den /IF-Befehl ja ohnehin nur verwenden, wenn der in einer *.RSJ (Robocopy-JOB-Datei) steht.
Und Du kannst /solltest diese Datei mit "Robocopy [grobe Parameter...] /Save:meinJob" anlegen.
Dann, wenn dieses Skelett steht, kannst Du entweder, wie vom sympathischen Weltmarktführer vorgeschlagen,
Künstliche Zeilenumbrüche bekommst Du eher nicht transportiert und eine Möglichkeit der Unterdrückung des Zeilenumbruchs beim ECHO-Befehl ist mir nicht geläufig.
Allerdings, wenn es Dich reizt: es gibt "aufgebohrte" ECHO-Tools als Freeware, sowohl in Bunt (XECHO.exe)
wie auch ein Tool, das sich ECHON.exe (oder .com?) nennt.
Das kann ein ECHO-ohne-Zeilenumbruch.
Habe leider keine Quellenangabe, aber eine Suchmaschine sollte das finden.
HTH
Biber
ich denke, da solltest Du nicht zu viel Aufwand in diese Strategie stecken.
Du kannst den /IF-Befehl ja ohnehin nur verwenden, wenn der in einer *.RSJ (Robocopy-JOB-Datei) steht.
Und Du kannst /solltest diese Datei mit "Robocopy [grobe Parameter...] /Save:meinJob" anlegen.
Dann, wenn dieses Skelett steht, kannst Du entweder, wie vom sympathischen Weltmarktführer vorgeschlagen,
- diese pure Textdatei mit einem Editor ergänzen/verfeinern
- oder dieses Template in einem Batch zeilenweise mit "ECHO ....>>NeuerJob.RSJ" selbst erzeugen (mit Deinen /IFs, eine je Zeile)
- oder aus der Vorlage 2 Teile schneiden (MeinJob.Part1 und MeinJob.part2), und zwar da, wo Deine Sonderfälle hinein sollen.
Künstliche Zeilenumbrüche bekommst Du eher nicht transportiert und eine Möglichkeit der Unterdrückung des Zeilenumbruchs beim ECHO-Befehl ist mir nicht geläufig.
Allerdings, wenn es Dich reizt: es gibt "aufgebohrte" ECHO-Tools als Freeware, sowohl in Bunt (XECHO.exe)
wie auch ein Tool, das sich ECHON.exe (oder .com?) nennt.
Das kann ein ECHO-ohne-Zeilenumbruch.
Habe leider keine Quellenangabe, aber eine Suchmaschine sollte das finden.
HTH
Biber
Hallo Manuel!
... und es gibt primitive Scripts, wie etwa:
Nicht weil's Sinn ergäbe (siehe Biber's Ausführungen), sondern nur als Proof-Of-Concept:
Grüße
bastla
... und es gibt primitive Scripts, wie etwa:
'MakeLine.vbs
If WScript.Arguments.Count = 0 Then
WScript.Echo "Aufruf mit: " & WScript.ScriptName & " ""Liste.txt"""
WScript.Quit(1)
End If
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
Set oFileList = fso.OpenTextFile(WScript.Arguments(0),1)
sTemp = ""
Do While Not oFileList.AtEndOfStream
sTemp = sTemp & oFileList.ReadLine & " "
Loop
oFileList.Close
WScript.Echo Trim(sTemp)
for /f "delims=" %%k in ('CScript //nologo MakeLine.vbs "%dateiliste%"') do (
echo robocopy.exe %source_dir% %target_dir% /IF %%k /E >%batch_file%
)
Grüße
bastla