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
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:
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
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…
J’ai trouvé une solution, mais bon gérer les string en batch c’est
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”
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 )