Top-Themen

Aktuelle Themen (A bis Z)

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, 2713 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 ..
Ähnliche Inhalte
Batch & Shell
For Schleife in einer .sh Datei
Frage von CrystalFlakeBatch & Shell4 Kommentare

Hallo Com, ich habe die Aufgabe bekommen in einer .sh File die beim Kuden ausgeführt werden soll, eine for ...

Batch & Shell
Bat - Schleife aus txt Datei
gelöst Frage von hoffi3dBatch & Shell16 Kommentare

Hallo, ich habe mir ein kleines Sicherungsscript gebastelt, und würde dieses gerne vereinfachen. Im Augenblick habe ich für jeden ...

Batch & Shell
BATCH: Information aus CSV Datei holen und für Umbenennung einer Datei nutzen
gelöst Frage von LaksloBatch & Shell5 Kommentare

Liebe Batch Profis, ich bin damit konfrontiert aus einer CSV Datei einen Wert zu holen und mit diesem Wert ...

Batch & Shell
Umbenennung per Skript
gelöst Frage von DerWoWussteBatch & Shell9 Kommentare

Moin Kollegen, habe bei der Suche nichts passendes gefunden, auf die Schnelle. Kann mir jemand ein paar Codezeilen spenden, ...

Neue Wissensbeiträge
Router & Routing

Lets Encrypt kommt auf die FritzBox

Information von bitcoin vor 2 StundenRouter & Routing

In der neuesten Labor-Version der FB7490 integriert AVM unter anderem einen Let's Encrypt Client für Zugriffe auf das Webinterface ...

Internet

Was nützt HTTPS, wenn es auch von Phishing Web-Seiten genutzt wird

Information von Penny.Cilin vor 3 TagenInternet17 Kommentare

HTTPS richtig einschätzen Ob man eine Webseite via HTTPS aufruft, zeigt ein Schloss neben der Adresse im Webbrowser an. ...

Webbrowser

Bugfix für Firefox Quantum released - Installation erfolgt teilweise nicht automatisch!

Erfahrungsbericht von Volchy vor 4 TagenWebbrowser8 Kommentare

Hallo zusammen, gem. dem Artike von heise online wurde mit VersionFirefox 57.0.1 sicherheitsrelevante Bugs behoben. Entgegen der aktuellen Veröffentlichung ...

Sicherheit

Teamviewer Sessions können gekapert werden - Update tw. verfügbar

Information von sabines vor 4 TagenSicherheit7 Kommentare

In bestimmten Konstellationen können Teamviewer Sessions gekapert werden, wahrscheinlich aber ein recht unwahrscheinliches Szenario. Da der Teamviewer gerne für ...

Heiß diskutierte Inhalte
Vmware
Installation Windows 10 VMware
Frage von Ghost108Vmware17 Kommentare

Hallo zusammen, versuche gerade mit Hilfe des vshpere clients eine virtuelle Windows 10 maschine aufzusetzen. 1. virtuelle Maschine erstellt ...

Exchange Server
SBS 2011 E-Mails können gesendet werden, aber nicht von extern empfangen
Frage von andreas1234Exchange Server14 Kommentare

Hallo Community, ich habe das Problem, dass seit knapp zwei Wochen die E-Mails von meinem SBS 2011 einwandfrei gesendet ...

Voice over IP
Telefonstörung - Ortsrufnummern kein Verbindungsaufbau
Frage von Windows10GegnerVoice over IP10 Kommentare

Hallo, sowohl bei uns als auch beim Opa ist es über VoIP nicht möglich Ortsrufnummern anzurufen. Es kommt nach ...

Windows Server
Server 2012 über Eingabeaufforderung devmgmt.msc geht nicht
gelöst Frage von achim222Windows Server9 Kommentare

Hallo, ich habe hier einen Server 2012 der im Reparaturmodus startet. Es liegt an einem falschen VirtIO Treiber für ...