Hello,
J'essaie d'exécuter les operations suivantes dans un dossier spécifique:
1- Renommer le fichier en supprimant les Espaces
2- Renommer le fichier en remplaçant les tirets "-" par underscore"_"
3- Deplacer le fichiers vers un autre dossier
voilà ce que j'essaie:
rem 1- Suppression des espaces dans le nom des fichiers
@echo off
setlocal enableextensions enabledelayedexpansion
for /r "D:\Dir1\Dir2\Dir3" %%f in (*.edi) do (
set ARG=%%~nxf
rename "%%f" !ARG: =!
)
rem 2 - replace tiret
for /r "D:\Dir1\Dir2\Dir3" %%f in (*-*.edi)
do call :ProcessFile %%f
goto :finished
:ProcessFile
set str=%1
rename %1 %str:-=_%
:finished
=> le script ne fonctionne que lorsque je l'exécute directement à partir du dossier contenant les fichiers: J'aimerais pouvoir l'exécuter à partir d'un autre dossier
=> lorsque je l'exécute à partir d'un autre dossier il n'ya que le 1 et 3 qui s'exécutent.
=> lorsque j'exécute le 2 séparement à partir de la console DOS j'ai le message: Syntaxe incorrecte.
NB: L'objectif pour moi est de scheduler ce Bat à l'aide d'un utilitaire.va donc se poser le problème du repertoire courant ou s'execute le batch.
Pour le problème de positionnement dans le répertoire courant du script, on utilise généralement en début de script :
rem echo %~d0 cd /d %~dp0
Qui permet de se positionner dans le répertoire courant ou se trouve le script, j'ai testé a l'instant sous W7 même si on est sur un autre disque il se positionne à l'endroit prévu. Ça évite les surprises quand on lance en mode non-interactif.