Per Batch Dateinamen aus Variablen in Textdatei speichern
Hallo,
ich stecke gerade etwas fest und hoffe, dass mir jemand helfen kann:
Ich wähle in meiner Batch eine bestimmte Datei aus und setze diese als Variable:
Beispiel: set Source=C:\_test\Test Datei (24.06.2012).db
diese Datei wird mit einer weiteren Datei verglichen:
Beispiel: set File=C:\_test\Test Datei (20.06.2012).txt
nun werden in beiden Datein die Linien bzw. Einträge gezählt und anschließend wird das Ergebnis in die erste Zeile der 2ten Datei eingetragen. Das ganze sieht in etwa so aus:
nun möchte ich aber, dass die ausgegebene Zeile auch noch den Source Namen enthält also:
Ergebnis ausgeschrieben: Es wurden 13 Einträge von 18 aktuell bekannten Einträgen aus Test Datei (24.06.2012) gefunden
desweitern möchte ich, dass "File" unter neuem Namen an anderer Stelle gespeichert wird und zwar als:
Differenz Source.txt also Differenz Test Datei (24.06.2012).txt
(ich weiß, dass es nicht wirklich die Differenz ist, aber es ist auch nur ein Beispiel)
Es wäre schön, wenn mir jemand Helfen könnte
ich stecke gerade etwas fest und hoffe, dass mir jemand helfen kann:
Ich wähle in meiner Batch eine bestimmte Datei aus und setze diese als Variable:
Beispiel: set Source=C:\_test\Test Datei (24.06.2012).db
diese Datei wird mit einer weiteren Datei verglichen:
Beispiel: set File=C:\_test\Test Datei (20.06.2012).txt
nun werden in beiden Datein die Linien bzw. Einträge gezählt und anschließend wird das Ergebnis in die erste Zeile der 2ten Datei eingetragen. Das ganze sieht in etwa so aus:
@echo off & setlocal
set Source=C:\_test\Test Datei (24.06.2012).db
set File=C:\_test\Test Datei (20.06.2012).txt
Set /a _Lines1=0
For /f %%j in ('Type "%File%"^|Find "" /v /c') Do Set /a _Lines1=%%j
Set /a _Lines2=0
For /f %%j in ('Type "%Source%"^|Find "" /v /c') Do Set /a _Lines2=%%j
(echo Es wurden %_Lines1% Einträge von %_Lines2% aktuell bekannten Einträgen gefunden)>C:\_test\temp.txt && type "%File%">>C:\_test\temp.txt && move /y C:\_test\temp.txt "%File%"
pause
nun möchte ich aber, dass die ausgegebene Zeile auch noch den Source Namen enthält also:
Ergebnis ausgeschrieben: Es wurden 13 Einträge von 18 aktuell bekannten Einträgen aus Test Datei (24.06.2012) gefunden
desweitern möchte ich, dass "File" unter neuem Namen an anderer Stelle gespeichert wird und zwar als:
Differenz Source.txt also Differenz Test Datei (24.06.2012).txt
(ich weiß, dass es nicht wirklich die Differenz ist, aber es ist auch nur ein Beispiel)
Es wäre schön, wenn mir jemand Helfen könnte
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 186952
Url: https://administrator.de/contentid/186952
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo trashcan!
Um nur den Dateinamen aus dem in der Variablen %File% stehenden Pfad zu erhalten, kannst Du so vorgehen:
(mehr dazu am Ende der Onlinehilfe - aufzurufen mit "
Alternativ ließe sich natürlich auch ganz einfach von vornherein eine Trennung von Pfad und Dateiname durch die Verwendung zweier Variablen - zB
erreichen (der Pfad wird sich ja vielleicht nicht ganz so oft ändern).
BTW: Die doppelten "
Und: "
Grüße
bastla
Um nur den Dateinamen aus dem in der Variablen %File% stehenden Pfad zu erhalten, kannst Du so vorgehen:
for /f "delims=" %%i in ("%File%") do set "FileName=%%~nxi"
for /?
") ...Alternativ ließe sich natürlich auch ganz einfach von vornherein eine Trennung von Pfad und Dateiname durch die Verwendung zweier Variablen - zB
set "FileName=Test Datei (20.06.2012).txt"
set "FilePath=C:\_test"
...
... type "%FilePath%\%FileName%" ...
BTW: Die doppelten "
set
" in den Zeilen 2 und 3 sind vermutlich in der Original-Datei nicht enthalten, und dass die Zeilen 5 und 8 ohne Anführungszeichen um die Pfadvariablen %File% und %Source% herum funktionieren, würde mich auch überraschen ...Und: "
move
" braucht (wie auch "copy
") in einem Batch kein "/y
" - es wird defaultmäßig bei Bedarf überschrieben (siehe "move /?
").Grüße
bastla
Hallo trashcan!
Grüße
bastla
Nur gibt es da noch ein Möglichkeit die Dateiendung wegzubekommen?
Hast Du Dir die Hilfe schon angesehen? Wenn ja, solltest Du das "x" in "%%~nxi
" entsprechend zuordnen können ...Gibt es eine Möglichkeit Ausgaben wie:
1 Datei(en) kopiert
im Fenster unsichtbar zu machen?
Du kannst Ausgaben, die nicht angezeigt werden sollen, mit "1 Datei(en) kopiert
im Fenster unsichtbar zu machen?
>nul
" ins "Nichts" umleiten (für Fehlermeldungen wäre "2>nul
" zu verwenden).Grüße
bastla