Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch nach Datei in Ordner suchen, dann umbenennen, dann kopieren

Frage Entwicklung Batch & Shell

Mitglied: Flo985

Flo985 (Level 2) - Jetzt verbinden

09.01.2009, aktualisiert 22:12 Uhr, 8544 Aufrufe, 19 Kommentare

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:
01.
@echo off  
02.
:eingabe  
03.
echo ====================================================== 
04.
echo Geben sie den Dateinamen der zu kopierenden Datei ein:  
05.
echo ======================================================  
06.
cd C:\Pfad\ 
07.
ren *.txt *.ori 
08.
set /p data= 
09.
xcopy C:\Pfad\%data% \\Server\Pfad\ /H 
10.
echo ======================================================  
11.
echo Wollen Sie noch eine Datei kopieren? (j/n)  
12.
echo ======================================================  
13.
set /p ant=  
14.
if "%ant%"=="j" GOTO eingabe  
15.
cls  
16.
echo ====================================================== 
17.
echo Ihre gewuenschten Daten wurden kopiert. 
18.
echo ====================================================== 
19.
echo Schoenen Tag noch :-) 
20.
echo ====================================================== 
21.
pause
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!!
Mitglied: Hannes-Schurig
09.01.2009 um 15:16 Uhr
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
Bitte warten ..
Mitglied: Flo985
10.01.2009 um 11:12 Uhr
Hi, erstmal Danke für deine Antowrt.
Ich weiß wie ddu das meinst mit den Pfads, da muss ich mal gucken, ob ich das so hinbekomme wie ich mir das vorstelle.
Die Batch habe ich mir mit Hilfe des Forums und anderen Leuten zusammen geschustert, also ich bin so bewander mit Batch-Programmierung.
Ich werde sowie ich Montag an der Arbeit bin nochmal ein wenig rumspielen und mal gucken ob ich es hinbekomme.
Werde dann Montag nochmal schreiben. Würde mich freuen, wenn du den Thread im Auge behälst und mir Montag dann evtl. nochmal helfen kannst.
Danke schon mal.
Bitte warten ..
Mitglied: Hannes-Schurig
11.01.2009 um 12:40 Uhr
Wird im Auge behalten, das kriegen wir gelöst.
Bis Montag
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 06:56 Uhr
Moin, also bisher habe ich es so:

@echo off
:eingabe
echo
echo Geben sie den Dateipfad ein:
echo

cd C:\SolidCam_NC\%pfad%
set /p pfad=
echo
echo Geben sie den Dateinamen der zu kopierenden Datei ein:
echo

ren %data% %data%.ori
set /p data=
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
echo
pause

Das Ding ist: Bei geben Sie den Dateipfad ein, muss ich es so hinkriegen, das wenn ich nichts eingebe in dem Ordner C:\SolidCam_NC bin. Nur wenn ich dort in einen Unterordner will, muss ich was eingeben.
Des Weiteren soll er mir die Datei, die ich kopiere von .txt in .ori umwandeln.
Dies muss er ja machen, wenn die Datei schon kopiert wurde oder?
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 09:49 Uhr
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.

01.
@echo off 
02.
:eingabe 
03.
echo ====================================================== 
04.
echo Geben sie den Dateipfad ein: 
05.
echo ====================================================== 
06.
cd C:\SolidCam_NC\ 
07.
set /p pfad= 
08.
if "%pfad%"=="" GOTO wechsel else GOTO name 
09.
:wechsel 
10.
cd C:\SolidCam_NC\%pfad% 
11.
:name 
12.
echo ====================================================== 
13.
echo Geben sie den Dateinamen der zu kopierenden Datei ein: 
14.
echo ====================================================== 
15.
echo Ihr aktueller Dateipfad ist %CD% 
16.
set /p data= 
17.
ren %data% %data%.ori 
18.
xcopy C:\SolidCam_NC\%data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H 
19.
echo ====================================================== 
20.
echo Wollen Sie noch eine Datei kopieren? (j/n) 
21.
echo ====================================================== 
22.
set /p ant= 
23.
if "%ant%"=="j" GOTO eingabe 
24.
cls 
25.
echo ====================================================== 
26.
echo Ihre gewuenschten Daten wurden kopiert. 
27.
echo ====================================================== 
28.
echo Schoenen Tag noch face-smile 
29.
echo ====================================================== 
30.
pause
gruß
CyberSnake
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 09:51 Uhr
überings

01.
ren %data% %data%.ori 
02.
set /p data=
du must erst die variable festlegen, sonst weiß er nicht was er umbenennen soll. war also bischen zeilenverdreht
in dem quell text von mir ist es schon geändert
Bitte warten ..
Mitglied: Hannes-Schurig
12.01.2009 um 10:10 Uhr
Hier wär meine Version.
Funktioniert, ich hoffe so wolltest du es haben.

01.
@echo off 
02.
REM gehe in das Standardverzeichnis 
03.
cd /d C:\SolidCam_NC\ 
04.
 
05.
REM Frage nach evtl Unterverzeichnis 
06.
:requestfolder 
07.
echo ====================================================== 
08.
echo Geben sie das Unterverzeichnis ein: 
09.
echo ====================================================== 
10.
 
11.
REM speichere Eingabe in %folder% 
12.
set /p folder= 
13.
 
14.
REM gibt es den Unterordner unter C:\Solidcam_NC\ ? 
15.
if exist %folder% goto changefolder 
16.
 
17.
REM retry wenn nicht 
18.
echo Pfad wurde nicht gefunden! Bitte erneut eingeben 
19.
echo. 
20.
echo. 
21.
goto requestfolder 
22.
 
23.
REM Ordnerwechsel in eigenem Call wegen requestfilewiederholungsproblem 
24.
:changefolder 
25.
cd %folder% 
26.
goto requestfile 
27.
 
28.
REM ansonsten weiter 
29.
:requestfile 
30.
echo. 
31.
echo ====================================================== 
32.
echo Geben sie den Dateinamen der zu kopierenden Datei ein: 
33.
echo ====================================================== 
34.
set /p file= 
35.
 
36.
REM gibt es unter C:\Solidcam_NC\%folder% die Datei %file% ? 
37.
if exist %file% goto copy 
38.
 
39.
REM retry wenn nicht 
40.
echo Datei %file% unter C:\Solidcam_NC\%folder% nicht gefunden. 
41.
echo Bitte erneut eingeben. 
42.
echo. 
43.
goto :requestfile 
44.
 
45.
:copy 
46.
ren %file% %file%.ori 
47.
 
48.
xcopy %file%.ori C:/Solidcam_NC/test2/ /H 
49.
 
50.
echo ====================================================== 
51.
echo Wollen Sie noch eine Datei kopieren? (j/n) 
52.
echo ====================================================== 
53.
set /p again= 
54.
if "%again%"=="j" goto requestfolder 
55.
cls 
56.
echo ====================================================== 
57.
echo Ihre gewuenschten Daten wurden kopiert. 
58.
echo ====================================================== 
59.
echo Schoenen Tag noch face-smile 
60.
echo ====================================================== 
61.
pause 
62.
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.
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 10:26 Uhr
@cybersnake
Also, bei deinem Script wechselt er in den Ordner, das funktioniert und er zeigt mir den Pfad richtig an und ich kann auch die Datei auswählen aus dem Unterordner. Allerdings kopiert er die Dateien nicht.
Und die Dateiendung, ist irgendwie noch nicht nicht richtig. Er hängt an die bestehende Datei einfach ein .ori dran.
Also wenn die Datei test.txt heißt, macht er ein test.txt.ori.
Muss bei dem xcopy, vielleicht noch das %pfad% irgendwie mit rein, damit er auch wirklich weiß, was er kopieren muss?

Trotzdem schon mal danke.
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 10:33 Uhr
@hannes
Zunächst auch dir vielen Dank für deine Hilfe. Folgendes Problem. Ich kann in einen Unterordner wechseln.
Dann fragt er mich ja nach der zu kopierenden Datei, die wähle ich per tab aus und dann bekomme ich die Meldung: unzulässige Parameteranzahl

Und bei der Dateiumbenennung, macht er ebenfalls das .ori an die bestehende Datei.

EDIT: Das kopieren funktioniert jetzt. Habe den Pfad angepasst. Das läuft, danke.
Nur eine andere Frage: Wenn ich in dem Standardverzeichnis bleiben will, was muss ich dann bei der ersten Abfrage (Verzeichnisabfrage) eingeben?

Dateiumbenennung geht weiterhin nicht.
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 10:48 Uhr
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

01.
@echo off 
02.
:eingabe 
03.
echo ====================================================== 
04.
echo Geben sie den Dateipfad ein: 
05.
echo ====================================================== 
06.
cd C:\SolidCam_NC\ 
07.
set /p pfad= 
08.
if "%pfad%"=="" GOTO wechsel else GOTO name 
09.
:wechsel 
10.
cd C:\SolidCam_NC\%pfad% 
11.
:name 
12.
echo ====================================================== 
13.
echo Geben sie den Dateinamen der zu kopierenden Datei ein: 
14.
echo ====================================================== 
15.
echo Ihr aktueller Dateipfad ist %CD% 
16.
set /p data= 
17.
xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H  
18.
ren %data% %data%.ori 
19.
echo ====================================================== 
20.
echo Wollen Sie noch eine Datei kopieren? (j/n) 
21.
echo ====================================================== 
22.
set /p ant= 
23.
if "%ant%"=="j" GOTO eingabe 
24.
cls 
25.
echo ====================================================== 
26.
echo Ihre gewuenschten Daten wurden kopiert. 
27.
echo ====================================================== 
28.
echo Schoenen Tag noch face-smile 
29.
echo ====================================================== 
30.
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)
Bitte warten ..
Mitglied: Hannes-Schurig
12.01.2009 um 10:49 Uhr
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
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 10:58 Uhr
@cybersnake
Hi, erstmal Danke. Ich sehe du hast verstanden wie ich es meine
Es funktioniert jetzt auch alles tadellos:
Nur bei dem umbenennen:
Also er kopiert die test.txt in das Verzeichnis auf dem Server und dort heißt es weiter test.txt.
Im Quellordner nennt er die Datei in test.txt.ori um.

Am liebsten wäre es mir, er nennt sie im Quellordner und Zielordner um. Aber wenn nicht auch nicht schlimm. Auf alle Fälle muss sie im Zielordner umbenannt sein. Und wie gesagt, wenn möglich sollte das .txt weg.
Meinst du das ist nicht irgendwie zu machen?
Könnte man vielleicht ein rename machen, das er die Dateiendung wegnimmt und dann ein zweites rename, das er die Dndung .ori setzen soll? Wäre das vielleicht möglich?
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 11:02 Uhr
also erstmal
01.
17. xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H   
02.
18.ren %data% %data%.ori 
mach daraus mal :
01.
xcopy %data% \\wmz-svr01\rwtsoft\SOLIDCAM-NC\ /H   
02.
ren \\wmz-svr01\rwtsoft\SOLIDCAM-NC\%data% %data%.ori  
03.
ren %data% %data%.ori 
teste das mal. hab grad keine zeit das zu prüfen.

wegen der endung der datei überlegt ich noch
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 11:05 Uhr
Hi, jetzt funktioniert es soweit, das er im Quell- und Zielordner das .ori an die Datei setzt.
Jetzt muss noch das .txt weg und schwupps sind wir fertig
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 11:11 Uhr
da fehlt mir noch die zündende idee. nach dem mittag meld ich mich falls mir was eingafallen ist
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 11:16 Uhr
Alles klar, ich bin auch schon dauernd am googeln
Hoffe wir finden was. Trotzdem schon mal vielen Dank an euch beide.
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 11:21 Uhr
es ist einfacher als gedacht
01.
ren \\wmz-svr01\rwtsoft\SOLIDCAM-NC\%data% *.ori 
02.
ren %data% *.ori 
versuch das mal
Bitte warten ..
Mitglied: Flo985
12.01.2009 um 11:53 Uhr
Genau das ist es!!!!!
Vielen Dank
GELÖST.
Bitte warten ..
Mitglied: cybersnake
12.01.2009 um 12:20 Uhr
bitte, gern geschehen

gruß
CyberSnake
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Windows Server
gelöst Datei per Batch in Ordner mit sich ständig änderndem Namen kopieren (3)

Frage von Drxrey zum Thema Windows Server ...

Batch & Shell
gelöst Per Batch nur neueste Datei mit bestimmten Dateianfang kopieren (3)

Frage von Peter32 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch - Datei aus Ordner einlesen mit Ausnahmen! (4)

Frage von Daedrafaction zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

DSL, VDSL
DSL-Signal bewerten (10)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...