Ich habe das folgende Batch-Skript von Wikipedia:
@echo off
for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
echo %%f
)
pause
In der for-Schleife werden alle Dateien mit der Erweiterung flv wiedergegeben, aber ich möchte einige Aktionen mit den Dateien ausführen, bei denen ich einmal die Datei ohne die Erweiterung und einmal mit der Erweiterung benötige. Wie könnte ich diese beiden bekommen?
Ich habe nach Lösungen gesucht, aber keine gefunden. Ich bin ein echter Neuling im Batch ...
file
batch-file
Poru
quelle
quelle
C:\Users\Admin\Ordner\foo.flv
und %% ~ nf würden Sie gebenfoo
. Wenn Sie alles außer der Erweiterung wollen, verwenden Sie %% ~ df %% ~ pf %% ~ nf, was Ihnen geben würdeC:\Users\Admin\Ordner\foo
%%~dpnf
wäre eine kürzere Alternative.%1
in einem Batch-Skript zu erhalten.echo %~n1
war was ich wollte.Falls die Datei, die Ihre Variable enthält, nicht vorhanden ist, funktioniert der
FOR
Ansatz nicht. Ein Trick, den Sie verwenden können, wenn Sie die Länge der Erweiterung kennen, ist die Verwendung eines Teilstrings:die
-4
Mittel , die die letzten 4 Ziffern (vermutlich .ext ) werden abgeschnitten.quelle
echo %f:~0,-4%
im Kontext des in der Frage verwendeten Beispiels versuche . Was mache ich falsch?SET fl=%%f
und dannecho %fl:~0,-4%
Ich bin auch ein Fremder für Windows Cmd, aber versuchen Sie Folgendes:
quelle
Dies ist eine sehr späte Antwort, aber ich habe sie gefunden, um ein bestimmtes Problem zu lösen, das ich mit DiskInternals LinuxReader hatte, indem ich '.efs_ntfs' an Dateien anhängte, die in Nicht-NTFS-Verzeichnissen (FAT32) gespeichert wurden:
quelle
.encrypted
alle seine Akten zusammen mit einer Lösegeldforderung hinzufügte. Anscheinend muss das angreifende Skript eine Batch-Datei gewesen sein, die umgekehrt ist und.encrypted
allen Dateien hinzugefügt wurde .Ich verwende dies, wenn ich einfach die Erweiterung aus einer Variablen entfernen möchte (ohne Verzeichnisse oder vorhandene Dateien zu schleifen):
Wenn Sie die Erweiterung von einem vollständigen Pfad entfernen möchten, verwenden Sie
%%dpnf
stattdessen:Beispiel:
(Direkt in der Konsole verwenden)
quelle
Verwenden Sie Cygwin Bash, um das Hacken durchzuführen
quelle
Wenn Ihre Variable ein Argument ist, können Sie einfach
%~dpn
gefolgt von der Argumentnummer verwenden, sodass Sie sich nicht um unterschiedliche Erweiterungslängen kümmern müssen.Zum Beispiel
%~dpn0
wird der Pfad der Batchdatei ohne Erweiterung zurückkehren,%~dpn1
wird%1
ohne Verlängerung, usw.quelle