J'ai le script batch suivant de Wikipedia:
@echo off
for /R "C:\Users\Admin\Ordner" %%f in (*.flv) do (
echo %%f
)
pause
Dans la boucle for, tous les fichiers avec l'extension flv sont repris, mais je veux faire des actions avec le (s) fichier (s) où j'ai besoin une fois du fichier sans l'extension et une fois avec l'extension. Comment pourrais-je avoir ces deux?
J'ai cherché des solutions mais je n'en trouve pas. Je suis un vrai novice en batch ...
file
batch-file
Poru
la source
la source
C:\Users\Admin\Ordner\foo.flv
et %% ~ nf vous donneraitfoo
. Si vous voulez tout sauf l'extension, utilisez %% ~ df %% ~ pf %% ~ nf qui vous donneraitC:\Users\Admin\Ordner\foo
%%~dpnf
serait une alternative plus courte.%1
dans un script batch.echo %~n1
était ce que je cherchais.Si le fichier contenu dans votre variable n'existe pas, l'
FOR
approche ne fonctionnera pas. Une astuce que vous pourriez utiliser, si vous connaissez la longueur de l'extension, consiste à prendre une sous-chaîne:les
-4
moyens que les 4 derniers chiffres (probablement .ext ) sont tronqués.la source
echo %f:~0,-4%
dans le contexte de l'exemple utilisé dans la question. Qu'est-ce que je fais mal?SET fl=%%f
et puisecho %fl:~0,-4%
Je suis également étranger à Windows cmd, mais essayez ceci:
la source
C'est une réponse très tardive, mais j'ai proposé ceci pour résoudre un problème particulier que j'avais avec DiskInternals LinuxReader ajoutant '.efs_ntfs' aux fichiers qu'il a enregistrés dans des répertoires non-NTFS (FAT32):
la source
.encrypted
ajouté à tous ses fichiers, avec une demande de rançon. Apparemment, le script attaquant doit avoir été un fichier batch qui est l'inverse de cela et ajouté.encrypted
à tous les fichiers.J'utilise ceci si je veux simplement supprimer l'extension d'une variable (sans boucler de répertoires ou de fichiers existants):
Si vous souhaitez supprimer l'extension d'un chemin complet, utilisez à la
%%dpnf
place:Exemple:
(Utiliser directement dans la console)
la source
Utilisation de cygwin bash pour faire le hachage
la source
Si votre variable est un argument, vous pouvez simplement utiliser
%~dpn
suivi du numéro d'argument, de sorte que vous n'ayez pas à vous soucier des longueurs d'extension variables.Par exemple
%~dpn0
retournera le chemin du fichier batch sans son extension,%~dpn1
sera%1
sans extension, etc.la source