Per Batch nach Datei in Ordner suchen, dann umbenennen, dann kopieren
Hi, ich möchte gerne folgendes ralisieren:
Ich möchte in eine Verzeichnis mit Unterordnern nach einer Datei suchen.
Sprich es müsste erstmal die abfrage nach der Datei kommen. Dann müsste er die Datei umbenennen, also nur die Dateiendung. Und dann soll diese noch kopiert werden.
Mein bisheriges Script:
Durch ren *.txt *.ori kann ich die Textdateien ja in .ori umwandeln. Allerdings wandelt er mir alle Dateien in dem Ordner um, er soll aber nur die Datei umwandeln, nach der ich suchen möchte. Das er nach der Datei fragt, die kopiert werden soll, das klappt schon, jetzt muss nur noch die Suchfunktion mit hinein.
Ich hoffe ihr könnt mir helfen!!
Ich möchte in eine Verzeichnis mit Unterordnern nach einer Datei suchen.
Sprich es müsste erstmal die abfrage nach der Datei kommen. Dann müsste er die Datei umbenennen, also nur die Dateiendung. Und dann soll diese noch kopiert werden.
Mein bisheriges Script:
@echo off
:eingabe
echo ======================================================
echo Geben sie den Dateinamen der zu kopierenden Datei ein:
echo ======================================================
cd C:\Pfad\
ren *.txt *.ori
set /p data=
xcopy C:\Pfad\%data% \\Server\Pfad\ /H
echo ======================================================
echo Wollen Sie noch eine Datei kopieren? (j/n)
echo ======================================================
set /p ant=
if "%ant%"=="j" GOTO eingabe
cls
echo ======================================================
echo Ihre gewuenschten Daten wurden kopiert.
echo ======================================================
echo Schoenen Tag noch :-)
echo ======================================================
pause
Ich hoffe ihr könnt mir helfen!!
Please also mark the comments that contributed to the solution of the article
Content-ID: 105603
Url: https://administrator.de/contentid/105603
Printed on: November 3, 2024 at 02:11 o'clock
19 Comments
Latest comment
Selbstverständlich benennt er alle um.
Du gibst erst den Pfad ein, dann gehst du in diesen Pfad bei
cd C:\Pfad\
Wenn du also als Pfad "Archiv\August\Test\" eingibst dann wechselt dein Script in den Ordner C:\Archiv\August\Test\
Als nächstes führt es den Befehl "ren *.txt *.ori" aus, also ALLE Dateien mit der Endung .txt (daher das * davor) werden in .ori umbenannt. Hast du jetzt 10 Dateien im Ordner 'Test', die mit .txt enden, dann werden auch alle 10 umbenannt!
Selbst wenn du als Pfad "Archiv\August\Test\test.txt" eingibst, so bleibt doch der Befehl "ren *.txt *.ori" der selbe, da du dort keine Variable drin hast. Daher werden immer alle Dateien umbenannt.
Ändere das Script z.B. in:
Geben Sie den Pfad ein: %pfad%
Geben Sie die Datei ein: %datei%
cd /D %pfad%
ren %datei% %datei%.ori
Das ist natürlich nur ein Konzept und wird so nicht in einer Batch funktionieren ;)
Aber es sieht ja so aus als könntest du genug Batch um das umzusetzen
Du gibst erst den Pfad ein, dann gehst du in diesen Pfad bei
cd C:\Pfad\
Wenn du also als Pfad "Archiv\August\Test\" eingibst dann wechselt dein Script in den Ordner C:\Archiv\August\Test\
Als nächstes führt es den Befehl "ren *.txt *.ori" aus, also ALLE Dateien mit der Endung .txt (daher das * davor) werden in .ori umbenannt. Hast du jetzt 10 Dateien im Ordner 'Test', die mit .txt enden, dann werden auch alle 10 umbenannt!
Selbst wenn du als Pfad "Archiv\August\Test\test.txt" eingibst, so bleibt doch der Befehl "ren *.txt *.ori" der selbe, da du dort keine Variable drin hast. Daher werden immer alle Dateien umbenannt.
Ändere das Script z.B. in:
Geben Sie den Pfad ein: %pfad%
Geben Sie die Datei ein: %datei%
cd /D %pfad%
ren %datei% %datei%.ori
Das ist natürlich nur ein Konzept und wird so nicht in einer Batch funktionieren ;)
Aber es sieht ja so aus als könntest du genug Batch um das umzusetzen
Hey, ich mal wieder
also das mit dem pfad ist soweit ich das sehe gelöst. wenn du bei der abfrage enter drückst bist du im pfad C:\SolidCam_NC, ansonsten wenn eingabe macht im unterordner.
ich hoffe das ist so wie du dir das vorgestellt hast. hab noch paar kleinigkeiten geändert und lass den aktiven pfad noch mal anzeigen bei der dateieingabe. kannst ja wieder rauslöschen wenn nicht gefällt.
gruß
CyberSnake
also das mit dem pfad ist soweit ich das sehe gelöst. wenn du bei der abfrage enter drückst bist du im pfad C:\SolidCam_NC, ansonsten wenn eingabe macht im unterordner.
ich hoffe das ist so wie du dir das vorgestellt hast. hab noch paar kleinigkeiten geändert und lass den aktiven pfad noch mal anzeigen bei der dateieingabe. kannst ja wieder rauslöschen wenn nicht gefällt.
@echo off
:eingabe
echo ======================================================
echo Geben sie den Dateipfad ein:
echo ======================================================
cd C:\SolidCam_NC\
set /p pfad=
if "%pfad%"=="" GOTO wechsel else GOTO name
:wechsel
cd C:\SolidCam_NC\%pfad%
:name
echo ======================================================
echo Geben sie den Dateinamen der zu kopierenden Datei ein:
echo ======================================================
echo Ihr aktueller Dateipfad ist %CD%
set /p data=
ren %data% %data%.ori
xcopy C:\SolidCam_NC\%data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H
echo ======================================================
echo Wollen Sie noch eine Datei kopieren? (j/n)
echo ======================================================
set /p ant=
if "%ant%"=="j" GOTO eingabe
cls
echo ======================================================
echo Ihre gewuenschten Daten wurden kopiert.
echo ======================================================
echo Schoenen Tag noch face-smile
echo ======================================================
pause
gruß
CyberSnake
Hier wär meine Version.
Funktioniert, ich hoffe so wolltest du es haben.
Die Ausgabe kann verfeinert werden, die Fehlerabfragen sollten verbesser werden und der "Unzulässige Parameter" sollte noch weg aber an sich geht alles, also nur noch Kleinkram zu tun.
Funktioniert, ich hoffe so wolltest du es haben.
@echo off
REM gehe in das Standardverzeichnis
cd /d C:\SolidCam_NC\
REM Frage nach evtl Unterverzeichnis
:requestfolder
echo ======================================================
echo Geben sie das Unterverzeichnis ein:
echo ======================================================
REM speichere Eingabe in %folder%
set /p folder=
REM gibt es den Unterordner unter C:\Solidcam_NC\ ?
if exist %folder% goto changefolder
REM retry wenn nicht
echo Pfad wurde nicht gefunden! Bitte erneut eingeben
echo.
echo.
goto requestfolder
REM Ordnerwechsel in eigenem Call wegen requestfilewiederholungsproblem
:changefolder
cd %folder%
goto requestfile
REM ansonsten weiter
:requestfile
echo.
echo ======================================================
echo Geben sie den Dateinamen der zu kopierenden Datei ein:
echo ======================================================
set /p file=
REM gibt es unter C:\Solidcam_NC\%folder% die Datei %file% ?
if exist %file% goto copy
REM retry wenn nicht
echo Datei %file% unter C:\Solidcam_NC\%folder% nicht gefunden.
echo Bitte erneut eingeben.
echo.
goto :requestfile
:copy
ren %file% %file%.ori
xcopy %file%.ori C:/Solidcam_NC/test2/ /H
echo ======================================================
echo Wollen Sie noch eine Datei kopieren? (j/n)
echo ======================================================
set /p again=
if "%again%"=="j" goto requestfolder
cls
echo ======================================================
echo Ihre gewuenschten Daten wurden kopiert.
echo ======================================================
echo Schoenen Tag noch face-smile
echo ======================================================
pause
exit
Die Ausgabe kann verfeinert werden, die Fehlerabfragen sollten verbesser werden und der "Unzulässige Parameter" sollte noch weg aber an sich geht alles, also nur noch Kleinkram zu tun.
ah ich seh mein fehler. du legst %data% fest und benennst sie dann um. danach soll er sie kopieren. aber dann ist %data% ja nen anderer wert und den findet er nicht mehr. und der fest pfad muss aus xcopy raus sonst gehts nich wenn du nen unterverzeichniss angibst
versuchs mal so
soll die quell datei umbenannt werden oder die datei auf dem zielserver? ich hab jetzt die quelldatei umbenannt
(auch wenn das mit der endung noch nicht stimmt)
versuchs mal so
@echo off
:eingabe
echo ======================================================
echo Geben sie den Dateipfad ein:
echo ======================================================
cd C:\SolidCam_NC\
set /p pfad=
if "%pfad%"=="" GOTO wechsel else GOTO name
:wechsel
cd C:\SolidCam_NC\%pfad%
:name
echo ======================================================
echo Geben sie den Dateinamen der zu kopierenden Datei ein:
echo ======================================================
echo Ihr aktueller Dateipfad ist %CD%
set /p data=
xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H
ren %data% %data%.ori
echo ======================================================
echo Wollen Sie noch eine Datei kopieren? (j/n)
echo ======================================================
set /p ant=
if "%ant%"=="j" GOTO eingabe
cls
echo ======================================================
echo Ihre gewuenschten Daten wurden kopiert.
echo ======================================================
echo Schoenen Tag noch face-smile
echo ======================================================
pause
soll die quell datei umbenannt werden oder die datei auf dem zielserver? ich hab jetzt die quelldatei umbenannt
(auch wenn das mit der endung noch nicht stimmt)
Ja wenn du aus der Datei test.txt test.ori machen willst dann erfordert das sicher ne Maske, die die 3 letzten Buchstaben entfernt und ori einsetzt. Da solltest vielleicht mal Googln, ich hab das in Batch noch nicht gemacht und da wir hier auch gerade umziehen hab ich auch keine Zeit das zu suchen/testen.
Wenn du auch den Standardpfad ohne Unterordner nutzen willst musst du dort noch sinnvoll ein if "%folder%"=="" goto requestfile oder so einbauen und das mit der anderen Abfrage, die zu requestfile führt, in Einklang bringen.
Sry bin grad echt im Stress, hier gehts grad voll rund.
So far
Wenn du auch den Standardpfad ohne Unterordner nutzen willst musst du dort noch sinnvoll ein if "%folder%"=="" goto requestfile oder so einbauen und das mit der anderen Abfrage, die zu requestfile führt, in Einklang bringen.
Sry bin grad echt im Stress, hier gehts grad voll rund.
So far
also erstmal
mach daraus mal :
teste das mal. hab grad keine zeit das zu prüfen.
wegen der endung der datei überlegt ich noch
17. xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H
18.ren %data% %data%.ori
xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H
ren \\wmz-svr01\rwtsoft\SOLIDCAM-NC\%data% %data%.ori
ren %data% %data%.ori
wegen der endung der datei überlegt ich noch