Récupérer la 1ere ligne d'un fichier texte et l'utiliser comme variable dans un batch

Une difficulté, une précision posez vos questions

Modérateur : WIN32-[GG]

Répondre
El_Barto
Batcheur occasionnel
Messages : 1
Enregistré le : 20 févr. 2020 18:09

Récupérer la 1ere ligne d'un fichier texte et l'utiliser comme variable dans un batch

Message par El_Barto »

Bonjour à tous,
Actuellement en pleine confection d'un batch, je cherche une commande pour
recuperer la seconde ligne d'un fichier texte (qui contient uniquement le numero
de serie d'un pc) afin de men servir pour nommer un fichier texte; j'arrive a réaliser
cela depuis des commandes powershell, en script ps1, mais je ne trouve pas
d'équivalence opérationnelle pour les batch...
J'ai bien trouvé des scripts comme celui-ci:

@echo off
set currentpath=%~dp0
wmic csproduct get identifyingnumber>>%currentpath%\Data\Temp\SN.txt
set "file=%currentpath%\Data\Temp\SN.txt"
call :GetLine "%file%" 2
set ma_ligne=%Line%
echo;%ma_ligne%
:GetLine <file> <Nb>
if "%~1"=="" pause>nul&exit
set "tmpFile=%~1"
set /a nb=%~2
set /a nbSkip=%nb%-1
( echo;for /f "skip=%nbSkip% tokens=*" %%%%l in ^('type "%tmpFile%"'^) do set "line=%%%%l"^&goto :GetLineok&echo;:GetLineok )> "%temp%\tmp_%~nx0"
call "%temp%\tmp_%~nx0"&del /q "%temp%\tmp_%~nx0"
set "line_%nb%=%line%"
cd C:\Windows\system32
hostname>>%currentpath%\Rapport\%ma_ligne%.txt

La commande "echo;%ma_ligne%" m'affiche bien l'élément mais le fichier texte prend pour
nom ".txt"...de plus si je choisis de récupérer la 1ere ligne (en remplaçant 2 par 1 à la
4ème ligne du script), d'un autre fichier dont j'ai besoin, le message "tokens=*" est inattendu"
et j'avoue ne pas comprendre pourquoi...
Mon but etant de stocker des infos dans un fichier texte qui aurait pour nom le numéro de série
de l'appareil, et pouvoir faire la même avec le nom d'hôte, ce que j'ai pu faire en ps1.
Merci à ceux qui pourrait m'apporter leur aide.
barbe_bleue
Batcheur occasionnel
Messages : 1
Enregistré le : 25 mai 2018 04:12

Re: Récupérer la 1ere ligne d'un fichier texte et l'utiliser comme variable dans un batch

Message par barbe_bleue »

Salut, p'tit bricolage qui fonctionne mais un peu crade puisque le fichier source est parcouru en intégralité…

Code : Tout sélectionner

@echo off
setlocal enabledelayedexpansion

set src=test.txt
set ligneArecuperer=2

for /f "tokens=*" %%a in (%src%) do (
set /a a+=1
if !a!==%ligneArecuperer% (
set ligne=%%a
)
)
echo %ligne%
pause
exit
Répondre