Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
[R]Problème boucle for...
Auteur Message
Répondre en citant
Message [R]Problème boucle for... 
Salut, j'ai un problème de boucle for qui doit supprimer les 21 premières ligne d'un fichier qu'on à glisser. Mais le problème c'est que ça supprime les ligne vide.

Code:
for /f "skip=21 delims=" %%i in ('type "%~1"') do echo;%%i>>"%TMP%\out.file
del /q "%~1"
type "%TMP%\out.file" >"%~1"
del /q "%TMP%\out.file"




Dernière édition par TheRake66 le Sam 2 Sep 2017 - 17:34; édité 1 fois

______________________________________________________
#~Ma chaine Youtube~#
Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message [R]Problème boucle for... 
salut

une solution possible

Code:
(for /f "tokens=1,* delims=:" %%i in ('findstr /n ".*" "input_file"') do @echo.%%j)>"output_file"


principe: préfixer toutes les lignes avec findstr pour empêcher for d'ignorer les lignes vides.



Répondre en citant
Message [R]Problème boucle for... 
jay a écrit:
salut

une solution possible

Code:
(for /f "tokens=1,* delims=:" %%i in ('findstr /n ".*" "input_file"') do @echo.%%j)>"output_file"


principe: préfixer toutes les lignes avec findstr pour empêcher for d'ignorer les lignes vides.



Ça ne marche pas.




______________________________________________________
#~Ma chaine Youtube~#
Répondre en citant
Message [R]Problème boucle for... 
TheRake66 a écrit:

Ça ne marche pas.


Peut-être que Ça est boiteux de la tête.



Répondre en citant
Message [R]Problème boucle for... 
Comme ça :

Code:
@echo off
SetLocal EnableDelayedExpansion

call :argc "%~0" %*

for /l %%i in (1,1,!TOTAL_ARGUMENTS!) do (
  for /f "skip=21 tokens=1* delims=]" %%j in ('type "!ARGUMENT[%%i]!" ^| find /V /N ""') do echo;%%k>>"%TMP%\out.file
  del /q "!ARGUMENT[%%i]!"
  type "%TMP%\out.file" >"!ARGUMENT[%%i]!"
  del /q "%TMP%\out.file"
)

set /p ".=End of treatment.."<nul&pause>nul
exit
:argc <ALL ARGUMENT>
  set TOTAL_ARGUMENTS=0&(for %%a in (%*) do (set ARGUMENT[!TOTAL_ARGUMENTS!]=%%~a&set/a TOTAL_ARGUMENTS+=1))&if not "!TOTAL_ARGUMENTS!"=="0" set TOTAL_ARGUMENTS_=!TOTAL_ARGUMENTS!&set/a TOTAL_ARGUMENTS-=1
goto :eof


Vous pouvez glisser/déposer plusieurs fichiers dessus, ça les traitera tous un par un Okay




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R]Problème boucle for... 
C'est bon j'ai trouvé une alternative.




______________________________________________________
#~Ma chaine Youtube~#
Répondre en citant
Message [R]Problème boucle for... 
TheRake66 a écrit:
C'est bon j'ai trouvé une alternative.


j'insiste :

Code:
for /f "skip=21 tokens=1* delims=]" %%j in ('type "%~1" ^| find /V /N ""') do echo;%%k>>"%TMP%\out.file
del /q "%~1"
type "%TMP%\out.file" >"%~1"
del /q "%TMP%\out.file"


et avec le multifile :

Code:
@echo off
SetLocal EnableDelayedExpansion
 
call :argc "%~0" %*
 
for /l %%i in (1,1,!TOTAL_ARGUMENTS!) do (
  for /f "skip=21 tokens=1* delims=]" %%j in ('type "!ARGUMENT[%%i]!" ^| find /V /N ""') do echo;%%k>>"%TMP%\out.file
  del /q "!ARGUMENT[%%i]!"
  type "%TMP%\out.file" >"!ARGUMENT[%%i]!"
  del /q "%TMP%\out.file"
)
 
set /p ".=End of treatment.."<nul&pause>nul
exit
:argc <ALL ARGUMENT>
  set TOTAL_ARGUMENTS=0&(for %%a in (%*) do (set ARGUMENT[!TOTAL_ARGUMENTS!]=%%~a&set/a TOTAL_ARGUMENTS+=1))&if not "!TOTAL_ARGUMENTS!"=="0" set TOTAL_ARGUMENTS_=!TOTAL_ARGUMENTS!&set/a TOTAL_ARGUMENTS-=1
goto :eof


et ce serai sympa de poster ton alternative, si quelqu'un à le même genre de problème que toi ça peut sauver des vies xDD (enfin ma solution fonctionne donc pas de souci)




______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R]Problème boucle for... 
Flammrock a écrit:
TheRake66 a écrit:
C'est bon j'ai trouvé une alternative.


j'insiste :

Code:
for /f "skip=21 tokens=1* delims=]" %%j in ('type "%~1" ^| find /V /N ""') do echo;%%k>>"%TMP%\out.file
del /q "%~1"
type "%TMP%\out.file" >"%~1"
del /q "%TMP%\out.file"


et avec le multifile :

Code:
@echo off
SetLocal EnableDelayedExpansion
 
call :argc "%~0" %*
 
for /l %%i in (1,1,!TOTAL_ARGUMENTS!) do (
  for /f "skip=21 tokens=1* delims=]" %%j in ('type "!ARGUMENT[%%i]!" ^| find /V /N ""') do echo;%%k>>"%TMP%\out.file
  del /q "!ARGUMENT[%%i]!"
  type "%TMP%\out.file" >"!ARGUMENT[%%i]!"
  del /q "%TMP%\out.file"
)
 
set /p ".=End of treatment.."<nul&pause>nul
exit
:argc <ALL ARGUMENT>
  set TOTAL_ARGUMENTS=0&(for %%a in (%*) do (set ARGUMENT[!TOTAL_ARGUMENTS!]=%%~a&set/a TOTAL_ARGUMENTS+=1))&if not "!TOTAL_ARGUMENTS!"=="0" set TOTAL_ARGUMENTS_=!TOTAL_ARGUMENTS!&set/a TOTAL_ARGUMENTS-=1
goto :eof


et ce serai sympa de poster ton alternative, si quelqu'un à le même genre de problème que toi ça peut sauver des vies xDD (enfin ma solution fonctionne donc pas de souci)


Désolé mais ça ne marche pas, j'ai essayer en glissant un batch et ça m'en a enlever la moité.

J'ai tout simplement fait ça :

Code:
type "%~1" | findstr /v "%sign%" >"%TMP%\out.file"
del /q "%~1"
type "%TMP%\out.file" >"%~1"
del /q "%TMP%\out.file"


Et le "%sign%" c'est une suite de caractères que j'ai j'ai écrite de cette manière :

Code:
{{commandes}} && REM {{suite de caractères }}


Comme ça ça détecte la suite de caractères pour en supprimer la ligne.




______________________________________________________
#~Ma chaine Youtube~#
Répondre en citant
Message [R]Problème boucle for... 
TheRake66 a écrit:
Désolé mais ça ne marche pas, j'ai essayer en glissant un batch et ça m'en a enlever la moité.


Ba..c'est ce que tu voulais faire :

TheRake66 a écrit:
Salut, j'ai un problème de boucle for qui doit supprimer les 21 premières ligne d'un fichier qu'on à glisser. Mais le problème c'est que ça supprime les ligne vide.





______________________________________________________
la vie est trop courte pour retirer le périphérique USB en toute sécurité...
Si la statue de la liberté lève le bras depuis 125 ans, c'est parce qu'elle cherche du réseau sur son Blackberry Torches...
Grâce à mon nouveau correcteur automatiste sur mon téléphage, je ne fais plus aucune faute d'orthodontie.
Quelqu'un a t il déjà demandé au drapeau japonais ce qu'il enregistre depuis tout ce temps ?
Visiter le site web du posteur
Répondre en citant
Message [R]Problème boucle for... 
Flammrock a écrit:
TheRake66 a écrit:
Désolé mais ça ne marche pas, j'ai essayer en glissant un batch et ça m'en a enlever la moité.


Ba..c'est ce que tu voulais faire :

TheRake66 a écrit:
Salut, j'ai un problème de boucle for qui doit supprimer les 21 premières ligne d'un fichier qu'on à glisser. Mais le problème c'est que ça supprime les ligne vide.


Non, je voulais que ça m’enlève les 21 premières lignes, or ça m'a enlever un code de génération qui etait à la fin de mon fichier et qui faisait 253 lignes, et ça me faisait disparaître certains caractères.




______________________________________________________
#~Ma chaine Youtube~#
Répondre en citant
Message [R]Problème boucle for... 
TheRake66 a écrit:
Flammrock a écrit:
TheRake66 a écrit:
Désolé mais ça ne marche pas, j'ai essayer en glissant un batch et ça m'en a enlever la moité.


Ba..c'est ce que tu voulais faire :

TheRake66 a écrit:
Salut, j'ai un problème de boucle for qui doit supprimer les 21 premières ligne d'un fichier qu'on à glisser. Mais le problème c'est que ça supprime les ligne vide.


Non, je voulais que ça m’enlève les 21 premières lignes, or ça m'a enlever un code de génération qui etait à la fin de mon fichier et qui faisait 253 lignes, et ça me faisait disparaître certains caractères.
Code:
@Echo off

for %%A in (%*) do (
   echo Traitement de %%A
   <nul more %%A +21 >%%A_dup
   >nul move /Y %%A_dup %%A
)
echo Fini !
pause>nul
goto :eof
Flammrock: La complexité à ses limites Mort de Rire.

PS: C'est pas parfais, genre, si vous mettez un fichier binaires (genre, un .png), ça va vous faire des trucs bizarres, et sinon, ça vous ajoute une fin de ligne à la fin du fichier, mais, pour un fichier batch, pas de soucis (genre, ça ne vous enlève pas la moitié du fichier Mr. Green).




______________________________________________________
Partager permet le savoir. Le savoir permet de partager de nouveau savoirs.
Répondre en citant
Message [R]Problème boucle for... 
TSnake41 a écrit:
Code:
@Echo off

for %%A in (%*) do (
   echo Traitement de %%A
   <nul more %%A +21 >%%A_dup
   >nul move /Y %%A_dup %%A
)
echo Fini !
pause>nul
goto :eof
Flammrock: La complexité à ses limites Mort de Rire.

PS: C'est pas parfais, genre, si vous mettez un fichier binaires (genre, un .png), ça va vous faire des trucs bizarres, et sinon, ça vous ajoute une fin de ligne à la fin du fichier, mais, pour un fichier batch, pas de soucis (genre, ça ne vous enlève pas la moitié du fichier Mr. Green).



Effectivement ça marche, mais j'ai déjà utilisé une alternative. C’était pour ça. Mais je garde quand même ton code pour un prochain programme. Okay




______________________________________________________
#~Ma chaine Youtube~#
Message [R]Problème boucle for... 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch