frysee
Goto Top

Suchen und Ersetzen per Batch (variable Dateinamen, feste Strings)

Hallo allerseits,
nachdem ich schon ziemlich lange am mitlesen bin und immer wieder nützliche Codeschnipsel und Tipps gefunden hab, hab ich heut mal selbst ne Frage... bzw. wahrscheinlich eher nen Anfängerproblem face-smile

Problemstellung:
In einer unserer Abteilungen werden NC-Files verarbeitet, die Steuerdaten für entsprechende Maschinen enthalten. Ein solches Steuerkommando ist beispielsweise "M51". Nun benötige ich einen codeschnipsel, der mir im Unterordner /Files in allen Dateien das Steuerkommando "M51" duch "M7" und "M52" duch "M9" ersetzt.

Da ich nicht der absolute Batch-Experte bin, hab ich mir inzwischen aus verschiedenen Quellen Befehle zusammengesucht, außerdem läuft das Ganze über AEdit, sprich ich benötige lediglich die Übergabe der Dateinamen an den Editor - und genau daran scheitert es noch.

Hier mal der Code in seiner momentanen Form, ich hoffe mir kann jemand meinen Fehler zeigen:
[code]
@echo off & setlocal
set "Ordner=Files"
set "Typ=i"
cd /d "%Ordner%"
for %%f in (*.%Typ%) do call :ProcessFile "%%f"
goto :eof
:ProcessFile
echo "%%f"
echo qi "%%f" /rM51M7qe | aedit
echo qi "%%f" /rM52M9qe | aedit
[/code]

greetz

Content-Key: 97826

Url: https://administrator.de/contentid/97826

Printed on: April 25, 2024 at 00:04 o'clock

Member: Wolfsrudel
Wolfsrudel Sep 25, 2008 at 11:04:07 (UTC)
Goto Top
Die set-Anweisung für "Ordner" sieht falsch aus...

Versuche mal das ganze mit

set Ordner=Absoluter\Pfad\zu\Ordner\Files

Nur mit "Files" an sich, wird er nicht wisse, wo das Verzeichnis liegt bzw. wird vom Wurzelverzeichnis des Batches ansetzen und sollte das Batch nicht im Verzeichnis liegen, in dem sich "Files" befindet, natürlich selbigen nicht auffinden.
Member: frysee
frysee Sep 25, 2008 at 11:31:11 (UTC)
Goto Top
genau so siehts aber aus, Batch und der Ordner "Files" liegen im selben Verzeichnis...
Es scheint eher an
[code]
echo qi "%%f" /rM51M7qe | aedit
[/code]
zu scheitern, weiß jemand Rat?

greetz
Member: frysee
frysee Sep 26, 2008 at 07:34:39 (UTC)
Goto Top
weiß niemand rat? ich bräuchte das skript relativ zeitnah und komm nicht wirklich zu einem ergebnis...

greetz
Member: bastla
bastla Sep 26, 2008 at 13:19:57 (UTC)
Goto Top
Hallo frysee!

Soferne es nicht "aedit" sein muss, könnte folgender Batch genügen:
@echo off & setlocal
set "Ordner=Files"  
set "Typ=i"  

set R=%temp%\Replace2.vbs
>%R%  echo F=WScript.Arguments(0):Set fso=CreateObject("Scripting.FileSystemObject"):T=fso.OpenTextFile(F).ReadAll  
>>%R% echo fso.CreateTextFile(F,True).Write Replace(Replace(T,"M51","M7"),"M52","M9")  

for %%f in ("%Ordner%\*.%Typ%") do cscript //nologo %R% "%%f"  
Bitte zunächst nur auf Testdaten "loslassen", da die Änderung in der jeweiligen Datei ohne Erstellung einer Sicherungskopie erfolgt.
Noch eine Anmerkung: Wie bereits von Wolfsrudel empfohlen, würde auch ich eher einen vollständigen Pfad angeben, also etwa:
set "Ordner=D:\NC-Test\Files"  

Grüße
bastla
Member: frysee
frysee Sep 26, 2008 at 16:06:13 (UTC)
Goto Top
Hab das ganze inzwischen in den Griff bekommen indem ich die Datei vor dem durchsuchen umbenenne und ins root-verzeichnis von AEdit verschiebe... scheinbar mag das script weder Bindestriche noch Ordnerstrukturen face-smile

greetz