% .bat

Résolu
superchinoy -  
DelNC Messages postés 2360 Statut Membre -
Bonjour,

Lorsque je lance mon fichier .bat, les % disparaissent et cela plante donc alors que cela fonctionne en ligne de commande. Des idées ?

@echo off
FOR /F "eol=; tokens=4,5* " %i in ('DIR /O-D') do if %i==debut_fichier (GOTO end)
:end
@echo END
@echo %j
PAUSE


4 réponses

  1. superchinoy
     
    OK, c'est résolu, il faut mettre deux fois le % dans un bat...
    @echo off
    FOR /F "eol=; tokens=4,5* " %%i in ('DIR /O-D') do if %%i==debut_fichier (GOTO end)
    :end
    @echo END
    @echo %%j
    PAUSE
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Bonjour,

      Peux-tu expliquer, s'il te plaît à quoi sert ton code.
      Merci

      Je cherche à faire un code qui me permettrait d'effacer les n caractères qui se situent entre deux ; pour toutes les lignes d'un document csv
      0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    Je cherche à faire un code qui me permettrait d'effacer les n caractères qui se situent entre deux ; pour toutes les lignes d'un document csv
    montre un exemple
    0
    1. DelNC Messages postés 2360 Statut Membre 2 010
       
      Hello dubcek & superchinoy

      Pour un des utilisateurs de la base de données, quand ils nous envoie les données on à ceci
      id_article; magasin1; designation; famille; cout_unitaire
      131; 131 ~ magasin1; Lampe de poche; sport; 10
      132; 132 ~magasin1; gourde; sport; 10

      il faut que je retire la partie 131 ~ par exemple

      Pour ce client, c'est le problème inverse que la question à laquelle tu as répondu ce matin.
      https://forums.commentcamarche.net/forum/affich-32769191-insertion-d-un-champs-dans-un-document-csv#p32774529

      Çà ne fais que 2 jours que je code en batch et je commence à devenir folle.

      Merci pour l'aide que vous pourrez m'apportée.
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      on teste pour ne pas modifier la 1ère ligne
      C:> type f1.csv
      id_article; magasin1; designation; famille; cout_unitaire
      131; 131 ~ magasin1; Lampe de poche; sport; 10
      132; 132 ~magasin1; gourde; sport; 10
      C:> bb
      id_article; magasin1; designation; famille; cout_unitaire
      131; magasin1; Lampe de poche; sport; 10
      132; magasin1; gourde; sport; 10

      C:> type bb.bat
      @echo off
      setlocal ENABLEDELAYEDEXPANSION
      set l=1
      for /F "delims=; tokens=1,2,*" %%a in (f1.csv) do (
      set c2=%%b
      if !l! NEQ 1 (
      set c2=!c2:~6,20!
      )
      echo %%a; !c2!; %%c
      set /a l+=1
      )
      0
    3. DelNC Messages postés 2360 Statut Membre 2 010 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Merci dubcek
      :)
      0
    4. DelNC Messages postés 2360 Statut Membre 2 010 > DelNC Messages postés 2360 Statut Membre
       
      Bonjour

      Est ce que çà serait possible selon toi de pouvoir faire la même chose mais avec un nombre de caractères à supprimer variable.
      Sinon je devrais adapter le script selon le nombre de caractères à supprimer.

      C:> type f1.csv
      id_article; magasin1; designation; famille; cout_unitaire
      131;131 ~ magasin1; Lampe de poche; sport; 10
      132;132 ~magasin1; gourde; sport; 10
      .....
      1132;1132 ~magasin1; gourde; sport; 10
      11132;11132 ~magasin1; gourde; sport; 10

      C:> bb
      id_article; magasin1; designation; famille; cout_unitaire
      131;magasin1; Lampe de poche; sport; 10
      132;magasin1; gourde; sport; 10
      .....
      1132;magasin1; gourde; sport; 10
      11132;magasin1; gourde; sport; 10

      Je vais tester en mettant un while dans le for
      0
    5. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      quel critère pour savoir jusqu'ou supprimner ? le champ contient toujours magasin ?
      0
  3. Dev1
     
    Bonjour dubcek

    J'ai le même problème que DelNC

    J'ai essayer de mettre le code que tu as posté le 20 novembre mais je ne vois pas où je dois le mettre.
    Un coup de Main s'il te plaît

    Merci
    :)
    0
    1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le mettre où ? dans le code du 13 novembre ?
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le mettre où ? dans le code du 13 novembre ?
      0
      1. Dev1 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Oui, s'il te plaît
        0
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      le mettre où ? dans le code du 13 novembre ?
      0
    4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      @echo off
      setlocal ENABLEDELAYEDEXPANSION
      set l=1
      for /F "delims=; tokens=1,2,*" %%a in (f1.txt) do (
      set c2=%%b
      if !l! NEQ 1 (
      for /F "delims=m tokens=2*" %%x in ('echo !c2!') do set c2=m%%x
      )
      echo %%a; !c2!; %%c
      set /a l+=1
      )
      0
  4. DelNC Messages postés 2360 Statut Membre 2 010
     
    Bonjour dubcek

    Merci encore pour le code que m'avais donné.

    Il m'a beaucoup aidé.

    J'avais besoin après de faire des manipulations sur le document original et le résultat.
    Il fallait les renommer et les déplacer dans des répertoire.

    Je mets le code au cas où çà pourrai aider quelqu’un

    :: copie le nouveau fichier resultat.csv dans le repertoire RESULT
    xcopy resultat.csv .\RESULT

    :: recuperation de la date du jour
    set mydate=%date:~6,4%_%date:~3,2%_%date:~0,2%

    :: je renomme le fichier en Article_Final_yyyy_mm_dd
    move resultat.csv Articles_Final_%mydate%.csv
    set Final=Articles_Final_%mydate%.csv

    :: je renomme le fichier en Articleoriginal_yyyy_mm_dd
    move Articles.csv Articles_Original_%mydate%.csv
    set Original=Articles_Original_%mydate%.csv

    :: deplace le repertoire Final dans HISTO
    move "%Final%" ".\HISTO\FINAL"

    :: deplace le repertoire Originaldans HISTO
    move "%Original%" ".\HISTO\ORIGINAL"
    0