2008-10-07 13 views
2

Existe-t-il un moyen de prendre des sous-chaînes d'une chaîne avec des fichiers .bat/.cmd?manipulation de symbole de chaîne dans les fichiers batch?

Par exemple, étant donné la chaîne "hello.txt" est-il possible de supprimer le fichier .txt?

EDIT: Existe-t-il également une façon plus générale de procéder ainsi, sans considérer qu'il s'agit d'un nom de fichier ou d'un chemin de fichier?

Répondre

8

Si cela est un fichier passé en paramètre, vous pouvez utiliser% ~ n1, comme ceci:

test.bat 
---------- 
echo %~n1 %~n2 

c:\> test.bat myfile.txt my.long.file.bat 
    myfile my.long.file 

Si vous connaissez la longueur de la chaîne, vous pouvez utiliser l'opérateur sous-chaîne:

echo %variable:0,4% => "test.txt" => "test" 

Et pour tout, sauf les 4 derniers caractères:

echo %variable:~0,-4% => "file...name.txt" => "file...name" 
+0

J'ai trouvé le lien "BatchFiles Website" très utile. Il a des échantillons pour de nombreuses tâches courantes. Il contient de bonnes descriptions, mais courtes, en haut de chaque page, de sorte que vous n'avez pas besoin de faire défiler une page de scripts entrecoupés de descriptions pour trouver un échantillon de ce dont vous avez besoin. –

+1

BatchFiles est parti avec GeoCities. Voici la version de archive.org: http://web.archive.org/web/20080611141151/http://www.batchfiles.co.nr/ Ce n'est pas grave - le site web dit que c'est pour Win98 seulement et qu'il ne s'appliquera pas à NT. – scobi

0

Pour une chaîne arbitraire, je ne pense pas.

Pour cet exemple, %~n1 résoudra un nom sans extension.

3

La syntaxe substring générale dans les fichiers .cmd (et les fichiers .bat poster Win95) est:

 
%variable:~num_chars_to_skip,num_chars_to_keep% 

Cette page fournit plus d'options: VarSubstring

1

Essayez help set pour un traitement de chaînes disponibles pour cmd. EXE. L'aide pour voir inclut des choses que vous pouvez faire normalement, en dehors de la « set » commande

Vous pouvez faire des choses comme

set source=hello.txt 
REM print hello 
echo %source:~0,-4% 
REM print o.t 
echo %source:~4,3% 
REM print help.txt 
echo %source:lo=p% 
REM etc 
echo %source:llo=% 

Il peut y avoir somethings mal dans le « code » ci-dessus. Je l'écris de mémoire, sans un cmd.exe disponible près de moi pour tester.

2

Pour d'autres intéressantes et substring méthodes de substitution "variables", vous pouvez vous aider à:

set /?

Pour l'analyse syntaxique chaîne (par exemple la recherche d'un '' dans une chaîne) essayer

pour /?

1

La meilleure façon est juste pour installer python (ou perl) Croyez-moi, je l'ai essayé presque tout, et il est juste de faire des maux de tête manipulation de texte dans « DOS » (ou quoi que ce soit d'autre).

0

Vous pouvez également consulter la documentation pour appel (appel /?) pour obtenir des informations spécifiques à la sous-chaîne sur les fichiers et les répertoires.