Les Batchs et moi, ça fait 2

Bon voilà, j’ai jamais rien compris à la syntaxe des Batchs donc je vous demande de l’aide pour réaliser une petite manip :
Je veux copier l’intégralité du dossier F:DCIM100CASIO Dans C:Mes documentsMes imagesDate-et-petit-nom-en-plus 

Est-ce possible ??

merci !

il faut faire un batch comme ca :

@mkdir "C:Mes documentsMes images%1" @copy F:DCIM100CASIO "C:Mes documentsMes images%1" [/quote]voila ^^ après tu appelle le batch avec nomdubatch.bat Date-et-petit-nom-en-plus (dans une console ou dans la boite de dialogie Exécuter) et c'est magique [img]style_emoticons/<#EMO_DIR#>/smile.gif[/img]

Mr. Wizard, get me the Hell out of here!

Arrrrgh ça ne marche pas

Il me marque ça

[quote]impossiblede créer le répertoire
repertoire non valide

 

Ce message a été édité par NaarShadaa le 07/11/2003

Le répertoire “Mes documents” n’est pas sur C:. Vérifie le chemin en faisant cllic droit->propriétés sur “Mes Documents” (dans l’explorateur) et tu adaptes avec le chemin indiqué.

Respectes aussi les guillements pour ne pas avoir d’emmerdes avec les espaces dans les chemins
Ce message a été édité par Moktar le 07/11/2003

Bah tous les chemins sont les bons, mais le batch ne me demande même pas d’entrer le nouveau non du dossier, je ne comprend pas.

Le batch n’a pas a te demander le nom du dossier à créer, c’est a toi de le spécifier lorsque tu lances le batch.

En gros, il ne faut pas que tu le lances en double-cliquant dessus mais depuis une fenêtre DOS, sous la forme suivante :  nomdubatch.bat Date-et-petit-nom-en-plus

Ah ok, désolé je suis pas super calé, merci !

Au fait, tant qu’on y est, est-il possible que le batch demande que l’on entre le nom du nouveau dossier ?
Ce message a été édité par NaarShadaa le 07/11/2003

Dans la ligne de commande il y a %1 c’est l’argument de ton batche, c’est le nom du repertoire. Il va remplacer le %1 par ce que tu va taper.

ex : copy.bat date-et-petit-nom-et-plus

la chaine c:Mes Documents%1 va devenir c:Mes Documentsdate-et-petit-nom-et-plus dans le batche, créant ainsi ton repertoire date-et-petit-nom-et-plus.

Merci monsieur le modérateur mais ça j’avais compris.

Ce que je me demande c’est si il est possible que le batch, lorsque je l’ouvre en double cliquant dessus, me demande quel est le nom du dossier qu’il doit créer.

@set /p ALBUMNAME=Entrez le sujet de l'album : @mkdir "%USERPROFILE%Mes documentsMes images%DATE% %ALBUMNAME%" @echo Copie en cours... @copy F:DCIM100CASIO "%USERPROFILE%Mes documentsMes images%DATE% %ALBUMNAME%">NUL @set ALBUMNAME= [/quote]Et hop, tu rentres le-petit-nom-en-plus quand on te le demande. (chaque ligne commence par un '@') [i]Ce message a été édité par xentyr le 09/11/2003[/i]

Bah ça ne marche pas, quand je l’ouvre, il ne me demande même pas d’entrer un nom de répertoire, puis après il me dit

[quote]Impossible de créer le repertoire
Copie en cours…
Repertoire non valide

Et aussi il me crée un repertoire DATEALBUMNAME dans le même répertoire où se trouve le batch.

Qu’est-ce qui se passe ?

Moi j’ai écrit ça

[quote]@set dossier=Mam
@mkdir “C:/Mes Documents/Mes Images/%dossier%”
@echo “Copie en cours…”
@copy “F:DCIM100CASIO” “C:/Mes Documents/Mes Images/%dossier%”[/quote]Mais ça ne résoud toujours pas mon problème, le batch, quand je l’ouvre ne me demande pas de nom de dossier. Ce programme doit être utilisé par des débutants donc c’est important. Dois-je perdre espoir ??
Ce message a été édité par NaarShadaa le 09/11/2003

Euh tu es sous quel OS au fait ? Car mon batch fonctionne parfaitement sur XP Pro ( admin ou compte limité ).

@set /p ALBUMNAME=Entrez le titre de l'album :

@mkdir “%USERPROFILE%Mes documentsMes images%DATE% %ALBUMNAME%”
@echo Copie en cours…
@copy F:DCIM100CASIO “%USERPROFILE%Mes documentsMes images%DATE% %ALBUMNAME%”>NUL
@set ALBUMNAME=[/quote]Tu le lances, et il te demande dans une fenêtre MS-DOS “Entrez le titre de l’album” qu’il enregistre dans une variable d’environnement. Tu rentres alors “Week-end à New-York”. Ensuite, il te crée dans le répertoire de ton utilisateur courant le répertoire “Mes documentsMes images2003-11-09 Week-end à New-York” (il crée toute l’arborescence au pire, mais toujours dans le répertoire du profil courant). Et le batch copie les fichiers dedans. S’il te met “Impossible de créer le répertoire”, c’est parce qu’un limited account n’a pas le droit de créer des répertoires n’importe où dans C:, d’où mon utilisation de la variable d’environnement %USERPROFILE% pour récupérer le répertoire maison où l’utilisateur courant a tous les pouvoirs.

Essaie de faire un copier/coller de mon script. Je l’ai écrit en plus petit pour que ça respecte au mieux les lignes.

PS: La dernière ligne, c’est pour supprimer la variable d’environnement.

[Edit] Rhaaa la 4ème ligne est quand même trop longue. Il n’y a pas d’espace entre les ‘%’ et les noms de variable d’environnement. La fin de la ligne est donc :

[…]Mes images%DATE% %ALBUMNAME%">NUL

[RE-EDIT] Fais gaffe aux slashs et anti-slashs.
Ce message a été édité par xentyr le 09/11/2003

Je suis sous Win Me

Et même en copiant collant, ton code ne marche pas. Il va falloir que je me motive pour écrire un vrai programme. Quel language utiliser ?

Alors tu peux ouvrir une fenêtre MS-DOS et nous copier/coller le résultat de la commande “set” s’il te plaît ?

COMSPEC=C:WINDOWSCOMMAND.COM
PATH=C:WINDOWS;C:WINDOWSCOMMAND;C:WINDOWSSYSTEM
PROMPT=$p$g
TEMP=C:WINDOWSTEMP
TMP=C:WINDOWSTEMP
winbootdir=C:WINDOWS
windir=C:WINDOWS
BLASTER=A220 I5 D1 T4 P330
CMDLINE=doskey /insert

Enjoy !

OKOK, le vieux shell…

Essaie ça alors :

@echo off

echo Entrez le nom de l’album:

$hackinput$.bat fc con nul /lb1 /n|date|find " 1:"
 entrez.bat echo set ALBUMNAME=

entrez.bat echo :loop
entrez.bat echo if not ‹ %%ALBUMNAME%%== › set ALBUMNAME=%%ALBUMNAME%% %%6
entrez.bat echo if ‹ %%ALBUMNAME%%== › set ALBUMNAME=%%6
entrez.bat echo shift
entrez.bat echo if not ‹ %%6== › goto loop
call $hackinput$.bat
del $hackinput$.bat>nul
del entrez.bat>nul
echo Nom de l’album : %ALBUMNAME%

$hackdate$.bat echo.|date|find « La »
la.bat echo set DATE=%%5
call $hackdate$.bat
del $hackdate$.bat>nul
del la.bat>nul
for %%D in (%DATE%) do if %%D=%DATE% goto IMPORT
echo Date : %DATE%

::else replace slashes by hyphens in date format
set ENTRYPOINT=goto:HEAD

$unslash$.bat echo %%ENTRYPOINT%%

$unslash$.bat echo :HEAD
$unslash$.bat echo set DATE=%%1
$unslash$.bat echo set ENTRYPOINT=goto:QUEUE
$unslash$.bat echo goto END
$unslash$.bat echo :QUEUE
$unslash$.bat echo for %%%%« / » in (-) do set DATE=%%DATE%%%%%%%%1
$unslash$.bat echo :END
for %%T in (%DATE%) do call $unslash$.bat %%T
set ENTRYPOINT=
del $unslash$.bat>nul
echo Date transformee : %DATE%

:IMPORT
mkdir « C:Mes documentsMes images%DATE% %ALBUMNAME% »
echo Copie en cours…
copy F:DCIM100CASIO « C:Mes documentsMes images%DATE% %ALBUMNAME% »>nul
set ALBUMNAME=
set DATE=
[/quote]Huhu, c’est marrant de faire remonter ses vieux trucs.
(Ça fonctionne sous Windows 98, donc ça devrait fonctionner aussi sous WinME)

Edit: Correction de fautes de frappe et ajout de petits textes en plus !
Ce message a été édité par xentyr le 09/11/2003

Arrgh ! Désolé mais il ne fait plus rien juste après avoir entré le nom de l’album.
Je ne sait pas d’où ça vient

xentyr : ca marche pas chez moi non plus (2000 pro)

Je tente de faire autre chose…

edit : est-ce que “petit nom” change ou c’est toujours le même ???

PS : c’est obligé que ce soit un batch ??? Parce que bon…
Ce message a été édité par lucasbfr le 09/11/2003

je propose 2 trucs :

  1. un exe : http://lucasbfr.free.fr/luk/cafzone/CAFZONE.EXE dont voici la source (faite à l’arrache en vieux QuickBasic) :
INPUT "Entrez le nom : 4 lettres max ;)( ...", nom$ jour$ = LEFT$(DATE$, 2) mois$ = MID$(DATE$, 4, 2) rep$ = "C:mesdoc~1mesima~1" + nom$ + jour$ + mois$ MKDIR rep$ PRINT "Répertoire " + rep$ + " créé !" SHELL "copy F:DCIM100CASIO " + rep$
  1. un batch en 2 parties :

Un fichier copie.bat :

@echo off echo Entrez le nom de l'album et la date (pas d'espaces ni de caractères spéciaux) echo puis faites [Ctrl]+[Z] (ca doit afficher "^Z") puis faites [Entrée] : copy con temp.txt copy copie.txt + temp.txt temp.bat temp.bat del temp.txt del temp.bat echo le nom du dossier est %dossier% copy F:DCIM100CASIO "C:Mes documentsMes images%dossier%"
et un fichier copie.txt :
set dossier=
 ATTENTION IL NE FAUT PAS TAPER ENTREE APRES CETTE LIGNE ! le = doit être le dernier caractère du fichier, il ne doit y avoir qu'une seule ligne

Et en vbs, ca serait pas plus pratique ?