% .bat

Résolu
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. 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
    1. 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
  2. Contributeur
    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
    1. 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.
    2. Contributeur
      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
      )
    3. @DelNCBonjour

      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
    4. Contributeur
      quel critère pour savoir jusqu'ou supprimner ? le champ contient toujours magasin ?
  3. 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
    :)
    1. Contributeur
      le mettre où ? dans le code du 13 novembre ?
    2. Contributeur
      le mettre où ? dans le code du 13 novembre ?
    3. Contributeur
      le mettre où ? dans le code du 13 novembre ?
    4. Contributeur
      @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
      )
  4. 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"