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

For Schleife mit Datei umbenennung

Frage Entwicklung Batch & Shell

Mitglied: didie08

didie08 (Level 1) - Jetzt verbinden

24.01.2012 um 17:02 Uhr, 2677 Aufrufe, 7 Kommentare

Nach längerem suchen, auch in diesem Forum bin ich leider zu keiner funktionierenden Lösung für mein Problem gekommen.

Ich möchte per Batch ein Programm ausführen das mir Datei Formate umwandelt.
Dabei sollen neben der Datei - Endung auch die 4 hinteren Zeichen des Datei Namens umbenannt werden.

Beispiel "Z:\Tempdaten\503\503251-3-part.prt" wird zu "Z:\Tempdaten\503\503251-3-step.stp"

Bei meiner .exe ist -i=<Input> und -o=<output>

Meine bisherigen bemühungen sehen so aus. Ich schaffe es einfach nicht den geänderten Namen für den output zu bekommen.

01.
dir %inputpath%\*.prt /S /B>d:\temp\part-list.txt 
02.
 
03.
setlocal enabledelayedexpansion 
04.
for /f "tokens=* delims= " %%i in (d:\temp\part-list.txt) do ( 
05.
set "stpname=%%i" & echo !stpname:~0,-8!>d:\temp\stpname.txt 
06.
SET /p variable=<d:\temp\stpname.txt 
07.
 
08.
%STEP203UG_DIR%\step203ug.exe -i="%%i" -o="%variable%step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log" 
09.
 
10.
)
Kann mir jemand helfen?


Gruß
didie08
Mitglied: bastla
24.01.2012 um 17:18 Uhr
Hallo didie08!

Soferne der Aufbau der Dateinamen immer dem selben Schema (-#-part.prt) folgt (und es im Pfad weder "-" noch "." gibt), sollte doch eigentlich
for /f "tokens=1-4 delims=-." %%i in ('dir /s/b "%inputpath%\*-*-part.prt') do echo %STEP203UG_DIR%\step203ug.exe -i="%%i-%%j-%%k.%%l" -o="%%i-%%j-step.stp" -d=%definitions_file% -l="d:\temp\%%~ni-%%j-%%k.log"
genügen (ungetestet).

Zum gefahrlosen Testen steht nach dem "do" ein "echo" ...
[Edit] Dein eigener Ansatz (auf das Nötigste reduziert) könnte etwa so funktionieren:
01.
setlocal enabledelayedexpansion 
02.
for /f "delims=" %%i in ('dir "%inputpath%\*.prt" /S /B') do ( 
03.
    set "stpname=%%i" & set "variable=!stpname:~0,-8!" 
04.
    %STEP203UG_DIR%\step203ug.exe -i="%%i" -o="%variable%step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log" 
05.
)
[/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: sebezahn
24.01.2012 um 19:49 Uhr
Hi,

ich habe es nicht ausprobiert, daher bitte vorher eine Kopie machen:


ren Z:\Tempdaten\503\*part.prt" wird zu "Z:\Tempdaten\503\*step.stp"


Eigentlich sollte das gehen, oder? Ich habe es allerdings noch nicht ausprobiert...
Sebezahn
Bitte warten ..
Mitglied: didie08
25.01.2012 um 09:04 Uhr
Hallo bastla und Sebezahn

Vielen Dank für eure Hilfe.

@bastla

Dein Lösungsvorschlag funktioniert. Nur habe ich hier das Problem, dass weiter vorne im Pfad weitere "-" auftauchen können. Dann funktioniert das ganze nicht mehr.

Bei der Hilfe die du mir für meinen eigenen Ansatz gegeben hast, wird leider die %valiable% immer noch nicht aufgelöst. Fällt die da noch was ein?

@sebezahn

Der ren Befehl hatte ich auch schon probiert. Der geht aber nicht. Es kommt ein Syntaxfehler.

Gruß
dide08
Bitte warten ..
Mitglied: bastla
25.01.2012 um 09:14 Uhr
Hallo didie98!
Bei der Hilfe die du mir für meinen eigenen Ansatz gegeben hast, wird leider die %valiable% immer noch nicht aufgelöst. Fällt die da noch was ein?
Ja - ich könnte es zur Abwechslung mal richtig machen
01.
setlocal enabledelayedexpansion 
02.
for /f "delims=" %%i in ('dir "%inputpath%\*.prt" /S /B') do ( 
03.
    set "stpname=%%i" & set "variable=!stpname:~0,-8!" 
04.
    %STEP203UG_DIR%\step203ug.exe -i="%%i" -o="!variable!step.stp" -d=%definitions_file% -l="d:\temp\%%~ni.log" 
05.
)
das Problem, dass weiter vorne im Pfad weitere "-" auftauchen können.
ließe sich mit einer zweiten "for"-Schleife (die ich vorerst vermeiden wollte) eliminieren - weiterhin ungetestet dann so:
01.
for /f "delims=" %%a in ('dir /s/b "%inputpath%\*-*-part.prt') do ( 
02.
    for /f "tokens=1-2 delims=-" %%i in ("%%~na") do echo %STEP203UG_DIR%\step203ug.exe -i="%%a" -o="%%~dpa%%i-%%j-step.stp" -d=%definitions_file% -l="d:\temp\%%~na.log" 
03.
)
BTW:
Der ren Befehl hatte ich auch schon probiert. Der geht aber nicht. Es kommt ein Syntaxfehler.
Ein Umbenennen scheint ja auch nicht zielführend, wenn Du den alten und den neuen Namen benötigst ...

... ansonsten: Bei "ren" darf die Angabe des neuen Namens keinen Pfad beinhalten.

Grüße
bastla
Bitte warten ..
Mitglied: sebezahn
25.01.2012 um 09:29 Uhr
Hi,

ok, einen Syntaxfehler bekomme ich nicht, aber auch nicht den gewünschten Dateinamen. Dennoch funktioniert es, WENN der erste Teil immer die gleiche Länge hat. Dann kannst du folgendes machen:


Datei 503251-3-part.prt soll werden 503251-3-step.stp

der Befehl lautet dann:

ren ?????????part.prt ?????????step.stp

eventuell kannst du dann eine Batch machen:

ren ?part.prt ?step.stp
ren ??part.prt ??step.stp
ren ???part.prt ???step.stp

und so weiter...
Viel Erfolg,
Sebezahn
Bitte warten ..
Mitglied: didie08
25.01.2012 um 09:59 Uhr
Hi

@bastla

Super.
Beide Lösungen funktionieren nun. Jetzt habe ich die Qual der Wahl.
Ich denke ich muss mich mal schlau machen was das !...! in einer For Schleife macht.

vielen Dank

@sebezahn

Ach danke für deine Hilfe

Die Länge der Dateinamen und des Pfads können varieren. Deshalb scheidet "ren" wohl aus.

Gruß
didie08
Bitte warten ..
Mitglied: bastla
25.01.2012 um 10:06 Uhr
Hallo didie08!

Freut mich, wenn's jetzt passt ...
Ich denke ich muss mich mal schlau machen was das !...! in einer For Schleife macht.
Schau Dir mal Friemlers sehr empfehlenswertes Tutorial zur FOR-Schleife an ...

... ansonsten als Kurzfassung: "delayedexpansion" wird mit der Schreibweise "!variable!" anstelle von "%variable%" erst tatsächlich ausgeführt und nur so ist es möglich, in einer Schleife erstellte / veränderte Variablen dann auch gleich innerhalb dieser Schleife zu verwenden ...

Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Webentwicklung
HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Informationsdienste
gelöst Aktuelle Firefox MSI Datei!? (8)

Frage von Hendrik2586 zum Thema Informationsdienste ...

Virtualisierung
gelöst VMDK Datei vergrößern auf der Console welche Datei ist die richtige? (3)

Frage von fireskyer zum Thema Virtualisierung ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...

Exchange Server
DNS Einstellung - zwei feste IPs für Mailserver (15)

Frage von ivan0s zum Thema Exchange Server ...