Es gibt da ja umfangreiche möglichkeiten mit
"for /F ...", batch ist aber auch nicht meine stärke.
Ich würds mit Windows Scripting Host machen.
Für den Fall, dass das für Dich in Frage kommt:
am einfachsten wärs wohl, mit batch eine liste zu erstellen:
for /R C:\temp %i in (*.bat) do @echo '%i',>>temp.txt
und den Inhalt von
temp.txt in das script unten in die variable
fileList zu kopieren, wobei backslashes zu forward-slashes konvertiert werden müssen. Das letzte Komma sollte gelöscht werden (siehe beispiel
"var fileList ...").
Das script muss in einer datei mit der endung .js stehen, und kann dann mit
wscript.exe xxx.js gestartet werden.
das script:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fileList = [
'C:/temp/datei.bat',
'C:/temp/datei2.bat'
];
main();
function main(){
var out = [], i = 0;
for( i = 0; i < fileList.length; i++ ){
out.push( fileList[i] );
editFile( fileList[i] );
}
msg( out.join('\n') );
}
function editFile( fname ){
var str = loadFile( fname );
if( !str ){ msg('fehler ' + fname); return; }
saveFile( fname + '_ed.txt', str.replace(/ZuErsetzenderPfad/g,'NeuerPfad') );
}
function msg( s ){ WScript.Echo( s ); }
function loadFile( fileName ){
var f1;
var out = "";
if( fso.FileExists(fileName) ) {
f1 = fso.OpenTextFile(fileName, 1);
if(f1.AtEndOfStream) msg("ERROR: Die Datei ist leer"); else out = f1.ReadAll();
f1.close();
}
else { msg("Datei nicht gefunden! --->" + fileName + ""); }
return out;
};
function saveFile( fileName, str ) {
var file = fso.OpenTextFile( fileName, 2, true ); // OpenTextFile( filename, iomode, create, format )
file.write( '' + str );
file.close();
};
hinweis:
Die load/save routinen sind natürlich sehr oberflächlich, und man kann natürlich auch die liste gleich mit WSH erstellen, aber erstmal so.