Dateinamen, die mit einer Zeichenfolge im Format *.txt beginnen, führen zu einem Fehler in FOR

Dateinamen, die mit einer Zeichenfolge im Format *.txt beginnen, führen zu einem Fehler in FOR

Ich habe ein Stück in meinem Windows-Batch-Skript. Es läuft einwandfrei wie folgt:

for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location.20150528060210.txt') do set count=%%C

Wenn es jedoch anstelle des fest codierten Namens .txt ausgeführt wird, schlägt es fehl:

for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location*.txt') do set count=%%C

Ich möchte den Namen der TXT-Datei nicht fest codieren. Kann mir jemand einen Vorschlag machen, wie ich hier einen Dateinamen auswählen kann, der mit „Location“ beginnt?

Antwort1

Bei Ausführung mit einer Wildcard-Spezifikation ...*.txtschlägt dies fehl

 for /f %%C in ('Find /V /C "" ^< %SFTP_INDIR%\Location*.txt') do set count=%%C

Der obige Befehl funktioniert nicht, da Sie nichtumleitenmehrere Dateien (eine Platzhalterspezifikation), die als Eingabe dienen sollen find.

Der folgende Befehl funktioniert:

for /f %%C in ('Find /V /C "" %SFTP_INDIR%\Location*.txt') do set count=%%C

Ich glaube jedoch nicht, dass Sie dadurch das gewünschte Ergebnis erzielen.

Dies liegt daran, dass Ihr for /fBefehl nur mit dem übereinstimmt,ErsteToken auf der Zeile, nämlich ----------.


Wie erhalte ich die Anzahl der Zeilen in einer Variablen?

Verwenden Sie die folgende Batchdatei (test.cmd):

@echo off
setlocal
setlocal EnableDelayedExpansion
for /f "tokens=2 delims=:" %%c in ('Find /V /C "" *.txt') do (
  set _count=%%c
  set count=!_count:~1!
  echo !count!
  )
  • !count!enthält die Anzahl der Zeilen in jeder übereinstimmenden Datei.

  • Ersetzen Sie ihn *.txtdurch Ihren eigenen Platzhalterdateinamen%SFTP_INDIR%\Location*.txt

  • count=!_count:~1!entfernt das führende Leerzeichen (es gibt ein führendes Leerzeichen, weil wir es als Trennzeichen _countverwenden, um den letzten Teil jeder Zeile zu erhalten).:

Beispielausgabe:

F:\test>test
5
2
7
5
39
39
75
1
5
0
11
5

F:\test>

verwandte Informationen