2017-12-10 1 views
2

Ich versuche, eine Textdatei zu einer Iteration hinzuzufügen, um die Ausgabezahl zu speichern, anstatt sie zu überschreiben, um die Iterationen beizubehalten.
Ich kann die erste Iterationsnummer schreiben, aber die Nummer wird nicht hinzugefügt.Hinzufügen einer Iteration zu einer Textdatei in einer Batch-Datei

Ich habe eine Textdatei mit nur der Iterationsnummer als 1.

iteration.txt
1

Mein Loskennzeichen so weit wie folgt aussieht.

Das Problem ist, dass es entweder überschreibt die Textdatei auf +1 oder +1 +1 +1 +1 und fügt die Nummer nicht hinzu.

+1

Batch ist kein echtes Programm * Sprache *. Es gibt nichts wie '% var% + 1' Die einzige Methode um Mathe zu machen ist [set /a](https://ss64.com/nt/set.html). Sie müssen die Mathematik mit 'set/a iter + = 1' und dann' echo% iter' machen. – Stephan

+0

Ich denke,% itera% ist ein Tippfehler? – Stephan

+0

Ja, es war ein Tippfehler, ich konnte es dankeschön machen. – Cam

Antwort

1

Ich schlage vor, diesen Code zu verwenden:

REM Run model outputs 

if not exist iteration.txt set "iter=1" & goto CopyFile 

set "iter=" 
for /F "delims=" %%i in (iteration.txt) do if not defined iter set "iter=%%i" 
set /A iter+=1 

:CopyFile 
copy run1_Diagnostics.csv storefilesfolder\%iter%_Diagnostics.csv 
>iteration.txt echo %iter% 

Es gibt auch eine andere Methode, um die erste Zeile einer Textdatei und ordnen sie in eine Umgebungsvariable zu lesen:

REM Run model outputs 

if not exist iteration.txt set "iter=1" & goto CopyFile 

set "iter=" 
set /P iter=<iteration.txt 
set /A iter+=1 

:CopyFile 
echo copy run1_Diagnostics.csv storefilesfolder\%iter%_Diagnostics.csv 
>iteration.txt echo %iter% 

Beide Batch-Dateien Überprüfen Sie zunächst, ob die Datei iteration.txt überhaupt im aktuellen Verzeichnis vorhanden ist. Die Umgebungsvariable iter wird mit dem Wert 1 definiert, wenn die Datei nicht existiert.

Ansonsten wird die erste Zeile aus der Datei gelesen und zugeordnet Umgebungsvariable iter Befehl FüR oder eine Eingabeumleitung aus der Datei für Wert der Umgebungsvariablen auf Aufforderung Befehl SET mit Option /P.

Der Wert aus der Datei gelesen wird, um ein mit dem Befehl SET mit Option /A inkrementiert, die den neuen Wert der Umgebungsvariablen iter bedeutet, ist das Ergebnis eines arithmetischen Ausdrucks. set /A ist die einzige Methode, die vom Windows-Befehlszeileninterpreter unterstützt wird, um einfache mathematische oder binäre Operationen an 32-Bit-Ganzzahlen mit Vorzeichen auszuführen. Der Wert iter ist 1, wenn die aus der Datei gelesene Zeichenfolge keine gültige 32-Bit-Ganzzahl mit Vorzeichen ist.

Als nächstes wird die Datei mit dem Anfangswert 1 kopiert oder der Wert aus der Datei iteration.txt wird um eins erhöht.

.\ ist nicht unbedingt erforderlich, um das aktuelle Verzeichnis anzugeben. Es ist sicher, diese zwei Zeichen wegzulassen, wenn sich die Datei oder der Ordner im aktuellen Verzeichnis befindet.

Die letzte Befehlszeile gibt den aktuellen Iterationswert aus, um STDOUT zu behandeln, der in eine Datei umgeleitet wird, die gerade erstellt oder überschrieben wird.

Der Umleitungsoperator und der Dateiname hier angegeben wird links ECHO zu befehlen, die die Zahl gibt wegen echo %iter%>iteration.txt würde für die Zahlen 1-9 nicht. Und mit echo %iter% >iteration.txt schreibt das Leerzeichen zwischen Nummer und Umleitungsoperator > auch in die Datei als Trailing-Space, die hier vermieden werden sollte.

Um die verwendeten Befehle und ihre Funktionsweise zu verstehen, öffnen Sie ein Eingabeaufforderungsfenster, führen Sie die folgenden Befehle aus und lesen Sie alle Hilfeseiten, die für jeden Befehl angezeigt werden, sorgfältig durch.

  • copy /?
  • echo /?
  • for /?
  • goto /?
  • if /?
  • rem /?
  • set /?

Lesen Sie auch den Microsoft-Artikel über Using Command Redirection Operators für eine Erklärung der Umleitung Operatoren < und > und single line with multiple commands using Windows batch file für eine Erklärung des Betreibers &.

Verwandte Themen