trashcan
Goto Top

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:

@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

Content-ID: 186952

Url: https://administrator.de/contentid/186952

Ausgedruckt am: 22.11.2024 um 09:11 Uhr

bastla
bastla 24.06.2012 aktualisiert um 10:47:10 Uhr
Goto Top
Hallo trashcan!

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"
(mehr dazu am Ende der Onlinehilfe - aufzurufen mit "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%" ...  
erreichen (der Pfad wird sich ja vielleicht nicht ganz so oft ändern).
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
trashcan
trashcan 24.06.2012 um 11:21:30 Uhr
Goto Top
Hallo bastla,

Dank dir! Das mit der Trenung wäre leider etwas unparktisch, da die Datei über einen Auswahl Dialog ausgewählt werden.

Erstere Version funtioniert aber wunderbar. Nur gibt es da noch ein Möglichkeit die Dateiendung wegzubekommen?

Zitat von @bastla:
BTW: Die doppelten "set" in den Zeilen 2 und 3 sind vermutlich in der Original-Datei nicht enthalten

Ja, war ein Versehen.

Zitat von @bastla:
und dass die Zeilen 5 und 8 ohne Anführungszeichen um die Pfadvariablen %File% und %Source% herum funktionieren, würde mich auch
überraschen ...

Lustigerweise funktioniert das face-smile - habs der Ordnunghaber aber gleich mal geändert.

Was mir gerade noch generell einfällt:

Gibt es eine Möglichkeit Ausgaben wie:

1 Datei(en) kopiert

im Fenster unsichtbar zu machen?

Viele Grüße

trashcan
bastla
bastla 24.06.2012 aktualisiert um 11:29:22 Uhr
Goto Top
Hallo trashcan!
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 ">nul" ins "Nichts" umleiten (für Fehlermeldungen wäre "2>nul" zu verwenden).

Grüße
bastla
trashcan
trashcan 24.06.2012 um 11:58:18 Uhr
Goto Top
Zitat von @bastla:
Hallo trashcan!
> 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 ...

hehe.. natürlich wieder gekonnt überlesen face-smile - klappt jetzt!

Zitat von @bastla:
Du kannst Ausgaben, die nicht angezeigt werden sollen, mit ">nul" ins "Nichts" umleiten (für
Fehlermeldungen wäre "2>nul" zu verwenden).

Bestens! Vielen Dank!

Viele Grüße

trashcan