J'ai un fichier "repertoire1.txt" qui contient sur la 1ère ligne le nom d'un répertoire. Je fais un traitement qui sera détaillé dans la suite de mon explication, le fichier de sortie est "rep1.txt". Ce fichier est le suivant :
" klbackup 2006-06-09 # 16-19-01"
Le problème comme vous le voyez c'est qu'il y a un espace sur la 1ère ligne avant le l'information voulue. Je veux absolument récupérer cette info mais sans l'espace avant.
j'utilise cette synthaxe suivante : "findstr [kl-$] repertoire1.txt > rep1.txt"
En croyant que sa fera l'extraction de la 1ère ligne du fichier en commencant par la chaîne de caractères qui commence par "kl" de "klbackup" jusqu'à la fin de la chaîne ($). Mais malheureusement l'espace reste au final avec la chaîne.
S'il s'agit d'une des pauvres commandes en ligne de Windows, je n'ai rien à te proposer.
Si tu peux disposer de HEAD.EXE et de SED.EXE, disponibles dans UnxUtils (par exemple en les copiant dans un dossier présent dans la variable PATH, ou en ajoutant à la variable PATH le dossier où tu les auras copiés) tu recopies simplement la ligne ci-dessus proposée dans un fichier .BAT.
:: l'avantage c'est qu'il y a pas besoin d'amorce. on peut alors virer la ligne set AMORCE= au dessus
%TEMPORAIRE% @%0
:getinfo
:: ici on a la premiere ligne en argument, on peut donc la parser comme
:: une ligne normale (attention car il faut quand même éliminer le premier terme)
shift
if "%1"=="" goto endget
if not "%RET%"=="" set RET=%RET% "%1"
if "%RET%"=="" set RET="%1"
goto getinfo
:endget
::suite du code, si on écrit :
echo %RET%
:: alors on affichera la premiere ligne du fichier avec des guillemets
ce qui se passe :
supposont que ton fichier contienne
klbackup 2006-06-09 # 16-19-01
Generated by some program that put randoms lines here ...
le copy va creer un fichier batch du genre : (en supposant que le script principal s'appelle ''script.bat'')
@script.bat CeCiEstUneChAinESpECIaLeUh klbackup 2006-06-09 # 16-19-01
Generated by some program that put randoms lines here ...
puis va l'executer, mais sans redonner la main à notre programme de départ
ce script formé de toute piece va lui simplement executer notre fichier de départ, mais avec un premier argument significatif et le reste de l'argument composé de la premiere ligne.
pour ne pas executer les lignes du dessous, on ne redonne pas la main après avoir rééxecuté notre script.
mais l'interpreteur il va nous aider : il va prendre la ligne et va nous prendre mot par mot les arguments que l'on pourrai traiter avec aise
TEMPORAIRE est une variable fixe qui doit contenir le chemin vers un fichier accesible en lecture/ecriture/execution
si on utilise une amorce, alors il faut que celle ci soit placé dans un repertoire accecible au moment ou on veut traiter la premiere ligne, et elle doit contenir :