yeastmaster
Goto Top

verschachtelte .bat nur einmal aufrufbar?

Hallo!
Ich bin gerade dabei, ein Skript zu basteln, welche mir mittels batch-Dateien das Umbenennen von Dateien erleichtern soll. Als Ausgangsmaterial habe ich zwei Dateilisten (.txt), welche den Vorher- und Nachher-Namen enthalten. Das Skript soll mir in eine neue Datei den Befehl "ren Vorher Nachher" reinschreiben, wobei die Namen aus gleichen Zeilen kommen sollten. Dies hab ich im Großen und Ganzen schon geschafft, jedoch habe ich das Problem, dass ich die batch Datei, welche das macht (und der als Variable die Zeilennummer übergeben wird) nur einmal aufgerufen werden kann.

Hier der Code:

@echo off & setlocal
set filelist=filelist.txt
set genelist=genelist.txt
set /a count=1
set /a countr=1
set /a linenbr=%1
set /a lastline=10

  FOR /f %%a IN (%filelist%) do set line=%%a & call :counter
   Goto :next
    :counter
     if %count%==%linenbr% set file=%line%
    set /a count+=1
    goto :eof
  :next

  FOR /f %%b IN (%genelist%) do set line2=%%b & call :counter2
   Goto :next2
    :counter2
     if %countr%==%linenbr% set gene=%line2% 
    set /a countr+=1
   goto :eof
   :next2

echo ren %file% %gene% >> rename.bat

Aufgerufen wir das Ganze folgendermaßen:

createlist.bat 34

Wobei 34 für die beiden Einträge aus den Zeilen, die verknüpft werden sollen, steht. So ein einzelner Aufruf funktioniert tadellos.
Ich möchte das jedoch nicht nur mit einer Zeile machen, sondern mit allen 96.
Eine Schleife (z.b. in einer anderen Datei) bietet sich an, oder eine einfache Aneinanderreihung:

createlist.bat 1
createlist.bat 2
createlist.bat 3
usw.

Das Problem ist nun, dass immer nach dem Ersten Durchlauf abgebrochen wird (egal ob mit Schleife oder so)... Wenn ich die Befehle händisch hintereinander eingebe, funktioniert es auch...
Warum ist das so? bzw. Was muss ich ändern, damits funktioniert???

Liebe Grüße aus Österreich,

Ewald

Content-Key: 89549

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

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

Mitglied: 60730
60730 Jun 10, 2008 at 15:42:09 (UTC)
Goto Top
Hi,

hast du schon mal folgendes Probiert

Tryout.cmd
Start /wait createlist.bat 1
Start /wait createlist.bat 2
Start /wait createlist.bat 3

So wartet die startende batch solange mit dem starten der Createlsit - bis der vorherige Lauf abgearbeitet ist.
Member: YeastMaster
YeastMaster Jun 10, 2008 at 15:52:50 (UTC)
Goto Top
Hmmm....

gute Idee eigentlich, jedoch muss ich nach jedem Durchlauf das vorherige Fenster schließen und auf "batchvorgang abbrechen? (J/N)" antworten.

*edit*

Wenn ich in die aufgerufene Datei am Schluss den Befehl "exit" reinschreibe, dann funkts!!!

Danke für die schnelle Hilfe,

lG Ewald
Member: miniversum
miniversum Jun 10, 2008 at 17:52:51 (UTC)
Goto Top
call createlist.bat 1
call createlist.bat 2
call createlist.bat 3
so auch?