Batch-Skript zum Abrufen des passenden Ausdrucksdateinamens in einem Ordner

Batch-Skript zum Abrufen des passenden Ausdrucksdateinamens in einem Ordner

Mithilfe eines Batch-Skripts gehe ich in den Ordner und in diesem Ordner habe ich verschiedene Dateien wie -

ABc.txt
Pqr.png
.
.
Test-1.2.0.zip

Aus diesen Dateien möchte ich den Namen einer Datei erhalten, die mit beginnt Testund die Erweiterung hat .zip. In diesem Fall Test-1.2.0.zip. Da die Version dynamisch sein könnte.

Können Sie mir bitte mit dem Batch-Skript helfen, es zu finden Test-1.2.0.zipund als Ausgabe zurückzugeben?

Antwort1

Klicken Sie mit der rechten Maustaste auf das Windows-Logo in der Startleiste, wählen Sie „Ausführen“ aus der Liste und öffnen Sie es. Geben Sie dann das Wort „Zuletzt verwendet“ ein und klicken Sie auf „OK“. Es wird ein Ordner mit den zuletzt verwendeten Dateien auf Ihrem Laptop geöffnet. Versuchen Sie, darin nach Ihrer Datei zu suchen.

Antwort2

Versuchen Sie es mit einer For /FSchleife mit:

where .:Strings/Characters+Wildcard+String/Characters

Der whereBefehl nimmt "."als wörtliches Zeichen an, nicht als Regex 1 Ziffer/Zeichen:

1 Digit/character          <==>  ? 
1 or More Digit/Character  <==>  *
Test-  1 Digit/Character . 1 Digit/Character . 1 Digit/Character.zip        <==> Test-?.?.?.zip
Test-  1 Digit/Character . 1 Digit/Character . 1 or More Digit/Character:   <==> Test-?.?.*.zip
  • Benutzen For /Fmit (%%~nxiNbin eXSpannung)
@echo off 

for /f useback^tokens^=* %%i in (`where .:"Test-?.?.?.zip"`)do echo\%%~nxi
  • Für Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.?.zip'} | Select-Object -ExpandProperty Name


# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.?.zip'} |select -Exp Name
  • Ergebnisse:
Test-1.2.0.zip
Test-1.2.1.zip
Test-1.2.2.zip
Test-1.2.3.zip
Test-1.2.4.zip
Test-1.2.5.zip
Test-1.2.6.zip
Test-1.2.7.zip
Test-1.2.8.zip
Test-1.2.9.zip
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.*.zip"`)do echo\%%~nxi
  • Für Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.*.zip'} | Select-Object -ExpandProperty Name


# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.*.zip'} |select -Exp Name
  • Ergebnisse:
Test-1.2.0.zip
Test-1.2.1.zip
Test-1.2.10.zip
Test-1.2.11.zip
Test-1.2.12.zip
Test-1.2.13.zip
Test-1.2.14.zip
Test-1.2.15.zip
Test-1.2.16.zip
Test-1.2.17.zip
Test-1.2.18.zip
Test-1.2.19.zip
Test-1.2.2.zip
Test-1.2.20.zip
Test-1.2.3.zip
Test-1.2.4.zip
Test-1.2.5.zip
Test-1.2.6.zip
Test-1.2.7.zip
Test-1.2.8.zip
Test-1.2.9.zip

  • FürReverseSortierenim cmd/bat-Code verwenden , für PowerShell hinzufügenfor ... ^| Sort /r`) do ...| Sort-Object -Descending
for /f useback^tokens^=* %%i in (`where .:"Test-?.?.*.zip"^|sort /r`)do echo\%%~nxi
  • Für Powershell:
Get-ChildItem -File '*.zip'| Where-Object {$_.Name -like 'Test-?.?.*.zip'} | Select-Object -ExpandProperty Name | Sort-Object -Descending


# Or..
ls -af '*.zip'| ? {$_.Name -like 'Test-?.?.*.zip'} |select -Exp Name | Sort -Des
  • Ergebnisse:
Test-1.2.9.zip
Test-1.2.8.zip
Test-1.2.7.zip
Test-1.2.6.zip
Test-1.2.5.zip
Test-1.2.4.zip
Test-1.2.3.zip
Test-1.2.20.zip
Test-1.2.2.zip
Test-1.2.19.zip
Test-1.2.18.zip
Test-1.2.17.zip
Test-1.2.16.zip
Test-1.2.15.zip
Test-1.2.14.zip
Test-1.2.13.zip
Test-1.2.12.zip
Test-1.2.11.zip
Test-1.2.10.zip
Test-1.2.1.zip
Test-1.2.0.zip


Antwort3

@echo off

for /f useback^tokens^=* %%i in (`where .:"temp-?.?.*.tar.gz"`)do echo\%%~nxi

diese Lösung hat bei mir im Batch-Skript funktioniert

?stellt 1 Ziffer/Zeichen dar undStern(*)char steht für eine oder mehrere Ziffern/Zeichen

verwandte Informationen