Forum Clubic

Aide sur un pti script Batch

Bonjour à tous !
Je voudrai creer un script .bat et je me demandais s’il était possible de mettre dans une variable le nom du repertoire où l’on se trouve.

Par exemple si je me trouve dans le repertoire: E:\MP3 & MVIDS\MVIDS\Amine-Jvoulais\ , j’aimerai que ma variable prenne la valeur de: Amine-Jvoulais

Ceci pour finalement renommer un fichier: Admettons que mon fichier s’appelle “fichier1.txt” et que je voudrai le renommer par la variable qui a pour valeur “Amine-Jvoulais” sans changer son extention. fichier1.txt deviendrai alors Amine-Jvoulais.txt

Tout d’abord est-ce possible ? Si oui, à quoi devront ressembler les commandes de mon .bat (celle qui met en variable le nom du repertoire où je suis, et celle qui renomme un fichier avec cette variable) ?

Un grand merci à ceux qui pourront m’apporter leur aide :slight_smile:

Hop hop hop :smiley:

Avec cd et findstr ça doit se faire;

ceci dit j’utilise plutôt bash…

J’ai pas tout compris :slight_smile:

Un exemple ? Une explication ? :ange:

Ce message n’était pas conforme aux règles d’utilisation du nouveau forum :

UP :slight_smile:

Non. Aucun exemple.

cd te renvoie le dossier courant, tandis que findstr permet de faire une recherche dans une chaîne. A toi de faire avec car je ne connais pas plus findstr.

Oui, le problème c’est que cd t’affiche le répertoire courant, mais ne le met pas dans une variable, et tu en as besoin dans une variable pour l’utiliser:

Le problème est que selon le système, c plus ou moins la même variable qui est utilisée, tente %cd% ou %~dp0 cf. le lien ci-dessous
http://blogs.msdn.com/oldnewthing/archive/…/28/362565.aspx

La seule technique qui marche sur tous les windows est over-compliquée: c’est de lancer un batch qui redirige l’affichage de la commande cd dans un batch généré, qui lance ce batch, non-sans avoir au préalable supprimé les retours chariots gênant en lançant un bout d’assembleur lui-aussi généré, pour la plaisir, je te donne ce petit bout de code :smiley:
source de “getPath.bat”


@echo off
rem from microsoft.com site
rem rewritted by deltree@2006

rem echo cd > \curpath.bat

echo set cur_path= > \curpath.bat

rem remove CRLF in curpath.bat file
echo rcx> patch.txt 
rem echo 03>> patch.txt the number is the requested file size!!
echo 0D>> patch.txt 
echo w>> patch.txt 
echo q>> patch.txt 
debug \curpath.bat < patch.txt  >nul
rem del patch.txt 

rem add the curpath to the generated batch
cd >> \curpath.bat
rem set it to the enc variable.
call \curpath.bat

donc ça met le chemin courant dans la variable "cur_path", ne change pas

bref tu utilise soit les varaible %cd ou %~dp0, soit ut lance ce patch.
mais ensuite il reste à découper la chaine…

tu t’appelle amine ou alphonse ? :smiley:

Ni l’un ni l’autre :smiley:

Mais en tout cas un grand merci pour ces explications… Je vais tenté de faire un truc qui ressemble à un script :slight_smile:

Et pour découper la chaine histoire de ne garder que le dernier repertoire ?
Ex: C:/Programs/Amine_Alphonse/

:smiley:

J’ai trouvé une solution, mais bon gérer les string en batch c’est :confused:

Pour l’aide, il faut regarder avec set/? et for /?: il y a des explications sur lu’tilisation des variables, j’ai pas mal cherché, ce qui faut retenir:
[codebox]
extrait de l’aide set /?
substitution:
%PATH:ch1=ch2%

substring:
%PATH:~10,5%

le 10 derniers:
%PATH:~-10%

tous saufs les 2 derniers
%PATH:~0,-2%

extrait de l’aide for/?
valeurs d’arguments %0, %1 … (%i en remplaçant i par 0 à 9)
%~I - étend %I en supprimant les guillemets (")
%~fI - étend %I en nom de chemin d’accès reconnu
%~dI - étend %I en lettre de lecteur uniquement
%~pI - étend %I en chemin d’accès uniquement
%~nI - étend %I en nom de fichier uniquement
%~xI - étend %I en extension de fichier uniquement
%~sI - chemin étendu contenant uniquement des noms courts
%~aI - étend %I en attributs du fichier
%~tI - étend %I en date/heure du fichier
%~zI - étend %I en taille du fichier
%~$PATH:I - parcourt les répertoires de la variable
d’environnement PATH et étend %I en nom du
premier fichier reconnu trouvé. Si le nom de la
variable d’environnement n’est pas défini ou
que le fichier n’est pas trouvé par la recherche,
alors ce modificateur étend en chaîne vide
[/codebox]

alors voilà, il n’y a rien pour découper directement mais on peut ruser: en faisant un fichier “rightbackslash.bat”

et en l’appelant comme ci-dessous

on affiche uniquement le rép en cours, qui se trouve alors dans la var %result%, à toi de l’utiliser dans un “move” ou un “rename” :wink:

Tu es vraiment sympatique de m’aider ainsi… Merci merci :slight_smile:

Je vais essayer d’integrer tout ça, et je te tiendrai au courant.
Encore merci.

ça maaaaaaarche :slight_smile: :slight_smile: :slight_smile:
deltree t’es génial ! 1000 merci !

Je t’en prie, je suis un peu en sous-activité en ce moment, alors j’ai un peu de temps :wink:

A tout hasard, aurais-tu MSN ?

Non, j’ai jamais essayé, ça marche en réseau d’entreprise?

Si les ports de votre routeurs ne sont pas bridés, normalement oui.
Mais c’est plutot reservé aux particuliers.
Dans les entreprises, c’est généralement vu comme un trou de sécu (ou officieusement un moyen de divertir les employés :smiley: )