Daten an Dateinamen anhängen
Wie kann ich es schaffen, dass in einem Textfile ausgegebene Berechnungen von mehreren Dateien jeweils an deren Filenamen angehängt werden?
Guten Morgen zusammen. Leider habe ich mal wieder ein Problem, bei dem ich nicht weiter weiß und auf eure Hilfe hoffe.
Derzeit sieht mein Code so aus:
Dieser Code funktioniert nur leider logischerweise nur bei einer einzigen Datei im selben Ordner, da set /p "x="<"temp\test.txt" ja nur die erste Zeile ausliest. Ich würde die Umbenennung aber gern für alle zip-Dateien in diesem Ordner in einem Rutsch machen,.
Die zugehörige test.txt sieht einfach so aus (bei angenommenen 3 verschiedenen zip-Dateien).:
3797B8435
3476C44Z8
B489ZJ983
Theoretisch wäre es aber kein Problem das Berechnungsprogramm eine Ausgabe zusammen mit den Dateinamen wie folgt (vielleicht sogar mit zusätzlichem Trennzeichen, müsste ich mal schauen) machen zu lassen, wenn das mehr nützt (für die Zuordnung, aber das sollte eigentlich kein Problem sein, da das andere Programm ja auch nach den Dateinamen abarbeitet und die Werte in das Testfile schreibt):
Dateiname1.zip 3797B8435
Datei22.zip3476C44Z8
DateiNr13.zip B489ZJ983
Da die Länge des Dateinamens variiert, habe ich deshalb in meinen bisherigen Versuchen darauf verzichtet, aber vielleicht liegt die Lösung doch im zusätzlichen Import und Abgleich der Dateinamen? Hat irgendwer noch eine Idee, wo ich ansetzen könnte?
Danke schonmal im voraus.
Guten Morgen zusammen. Leider habe ich mal wieder ein Problem, bei dem ich nicht weiter weiß und auf eure Hilfe hoffe.
Derzeit sieht mein Code so aus:
@echo off
REM +++ Hole anzuhängende Daten aus Textfile
set /p "x="<"temp\test.txt"
REM +++ Hänge Inhalt der test.txt an Dateinamen an
for %%a in (*.zip) do copy %%a "%%~na_%x%.zip"
PAUSE
Die zugehörige test.txt sieht einfach so aus (bei angenommenen 3 verschiedenen zip-Dateien).:
3797B8435
3476C44Z8
B489ZJ983
Theoretisch wäre es aber kein Problem das Berechnungsprogramm eine Ausgabe zusammen mit den Dateinamen wie folgt (vielleicht sogar mit zusätzlichem Trennzeichen, müsste ich mal schauen) machen zu lassen, wenn das mehr nützt (für die Zuordnung, aber das sollte eigentlich kein Problem sein, da das andere Programm ja auch nach den Dateinamen abarbeitet und die Werte in das Testfile schreibt):
Dateiname1.zip 3797B8435
Datei22.zip3476C44Z8
DateiNr13.zip B489ZJ983
Da die Länge des Dateinamens variiert, habe ich deshalb in meinen bisherigen Versuchen darauf verzichtet, aber vielleicht liegt die Lösung doch im zusätzlichen Import und Abgleich der Dateinamen? Hat irgendwer noch eine Idee, wo ich ansetzen könnte?
Danke schonmal im voraus.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 171149
Url: https://administrator.de/contentid/171149
Ausgedruckt am: 18.11.2024 um 05:11 Uhr
3 Kommentare
Neuester Kommentar
Aloha,
Also dein voranstehendes Programm berechnet für jeweils eine Datei diesen Wert? Dann ist für mich banane, dass du diese erst in ein Textfile schreibst und dann widerum erneut Schleifen laufen lassen willst, um die Dateien, die bereits vorher angefasst werden, umzubenennen.
Ich meine:
Programm X nimmt Datei A aus
Wäre natürlich gut zu wissen, was Programm X batch? 3rd-party-tool? ist und wie du es im bisherigen Verlauf einsetzt.
Oder wie sehe ich das? Wäre für mich der logischste und direkteste Weg.
greetz André
P.S.:
Variante 1 für Dateinamen ohne Leerzeichen | Liste à la
Variante 2 für Dateinamen mit Leerzeichen | Liste à la
P.P.S.: Erst einmal frühstücken ;D
Danke schonmal im voraus.
... wollen wir hier nicht mehr lesen ...Also dein voranstehendes Programm berechnet für jeweils eine Datei diesen Wert? Dann ist für mich banane, dass du diese erst in ein Textfile schreibst und dann widerum erneut Schleifen laufen lassen willst, um die Dateien, die bereits vorher angefasst werden, umzubenennen.
Ich meine:
Programm X nimmt Datei A aus
%%i
(wahrscheinlich), nimmt sich wasauchimmeresfürdieBerechnungbenötigt
berechnet den Wert und ren
oder von mir aus auch copy
wie oben angegeben dann %%i
zu %%~ni_%Berechnungsergebnis%%%~xi
Wäre natürlich gut zu wissen, was Programm X batch? 3rd-party-tool? ist und wie du es im bisherigen Verlauf einsetzt.
Oder wie sehe ich das? Wäre für mich der logischste und direkteste Weg.
greetz André
P.S.:
Variante 1 für Dateinamen ohne Leerzeichen | Liste à la
Dateiname1.zip 3797B8435
@echo off & setlocal
set "Pfad=E:\Skripte\Ablage\Temp"
set "LOG=%Pfad%\test.txt"
pushd "%Pfad%"
for %%s in (*.zip) do (
for /f "tokens=2" %%m in ('findstr "%%s" "%LOG%"') do (
ren "%%s" "%%~ns_%%m%%~xs"
)
)
popd
pause
goto :eof
Dateiname 1.zip 3797B8435
@echo off & setlocal
set "Pfad=E:\Skripte\Ablage\Temp"
set "LOG=%Pfad%\test.txt"
pushd "%Pfad%"
for %%s in (*.zip) do (
for /f "delims=" %%m in ('findstr /c:"%%s" "%LOG%"') do call :Ablauf "%%s" "%%m"
)
popd
pause
goto :eof
:Ablauf
set "Name=%~1 "
set "Zeile=%~2"
call set "replace=%%Zeile:%Name%=%%"
ren %1 "%~n1_%replace%%~x1"
goto :eof
P.P.S.: Erst einmal frühstücken ;D
Hallo Sodele und Skyemugen!
Grundsätzlich schließe ich mich Skyemugen an - die direkte Verarbeitung wäre sicherlich der sinnvollste Weg ...
... ansonsten aber ist die Variante mit der Liste inkl Dateinamen auf jeden Fall besser (wobei die Reihenfolge "Hashwert Leerzeichen Dateiname" lauten sollte), denn dann kann mit einem "
Da die bereits umbenannten Dateien in der Liste nicht mehr gefunden werden, könnte der Batch bei Bedarf auch mehrmals laufen ...
Grüße
bastla
Grundsätzlich schließe ich mich Skyemugen an - die direkte Verarbeitung wäre sicherlich der sinnvollste Weg ...
... ansonsten aber ist die Variante mit der Liste inkl Dateinamen auf jeden Fall besser (wobei die Reihenfolge "Hashwert Leerzeichen Dateiname" lauten sollte), denn dann kann mit einem "
findstr
" der Wert der jeweiligen Datei gesucht werden - etwa:for %%i in (*.zip) do for /f %%a in ('findstr /e /c:"%%~nxi" "temp\test.txt"') do ren "%%i" "%%~ni%%a%%~xi"
Grüße
bastla