% .bat

Résolu/Fermé
superchinoy - 12 nov. 2015 à 10:44
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 - 8 déc. 2015 à 10:14
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

superchinoy
12 nov. 2015 à 11:16
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
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002
13 nov. 2015 à 03:37
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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
13 nov. 2015 à 09:01
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
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002
13 nov. 2015 à 11:30
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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
13 nov. 2015 à 12:28
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
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002 > dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024
15 nov. 2015 à 21:28
Merci dubcek
:)
0
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002 > DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020
20 nov. 2015 à 00:31
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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
20 nov. 2015 à 08:15
quel critère pour savoir jusqu'ou supprimner ? le champ contient toujours magasin ?
0
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
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
7 déc. 2015 à 08:33
le mettre où ? dans le code du 13 novembre ?
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
7 déc. 2015 à 08:35
le mettre où ? dans le code du 13 novembre ?
0
Dev1 > dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024
7 déc. 2015 à 21:50
Oui, s'il te plaît
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
7 déc. 2015 à 08:35
le mettre où ? dans le code du 13 novembre ?
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
8 déc. 2015 à 08:27
@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
DelNC Messages postés 2234 Date d'inscription samedi 25 octobre 2014 Statut Membre Dernière intervention 22 février 2020 2 002
8 déc. 2015 à 10:14
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