Je suis en train d'écrire un script de fichier de commandes en utilisant la commande Windows et je veux changer chaque occurrence d'un espace vide avec "," Quelle est la manière la plus simple de faire cela?Rechercher et remplacer par un fichier de commandes
Répondre
Si vos utilisateurs une liste de mots sur une ligne dans un fichier texte, séparés par des espaces, par exemple:
one two three four
Créer un fichier batch SpaceToComma.bat comme suit:
@echo off
setlocal
for /F "tokens=* delims= " %%a in (%1) do @set data=%%a
echo %data: =,%
endlocal
Ensuite, exécutez, vous aurez e Les mots séparés par des virgules. c'est ce que tu veux?
C:\>SpaceToComma.bat data.txt
one,two,three,four
Si vous avez un fichier sur plusieurs lignes, cela fera:
donnees.txt
one two three four
five six seven
SpaceToComma.bat
@echo off
setlocal
for /F "tokens=* delims= " %%a in (%1) do @call :processaline %%a
endlocal
goto :eof
:processaline
setlocal
set data=%*
echo %data: =,%
endlocal
goto:eof
Sortie
C:\>SpaceToComma.bat data.txt
one,two,three,four
five,six,seven
(Il y a probablement une manière intelligente de faire ceci sans le sous-programme, en utilisant les! Données! syntaxe pour l'expansion de variable retardée, mais je ne pouvais pas l'obtenir pour fonctionner avec la syntaxe de substitution.)
Si ce n'est pas ce que vous voulez, alors expliquez et je peux essayer de vous aider.
(PS: je prends plaisir à l'aide des fichiers batch où les gens insistent sur le fait qu'il ne peut pas être fait.)
Eh bien, cela dépendra beaucoup de la façon dont vous obtenez les données, mais vous pourrez peut-être trouver quelque chose avec une construction For-Do. Faites en sorte que le séparateur de champs soit un espace puis reconstruisez la chaîne dans le do avec un, entre chaque jeton. Puis-je suggérer un langage de script plus robuste? Vous devriez avoir VBScript sur à peu près n'importe quel arc de fenêtres relativement moderne.
Vous pouvez télécharger sed.exe de http://unxutils.sourceforge.net/ et exécutez la commande suivante:
sed -e "s/ /,/" infile.txt >outfile.txt
que vous vouliez dire 'spacetocomma.bat' –
Merci PA. Réponse corrigée. (Ravi de voir quelqu'un le lire aussi attentivement.) –
@RichardA J'ai utilisé SpaceToComma.bat dans un fichier csv de 2 Go et j'ai bien travaillé. Cependant, pour chaque espace, il met une virgule, i. e., 2014 12 1 est devenu 2014,, 12,, 1. Existe-t-il un moyen de reconnaître différents espaces et de les remplacer par une seule virgule? (par exemple, de 2014 12 1 à 2014, 12,1). –