Imbriqué pour l'aide de la commande s'il vous plaît

1

Je tente d'acquérir le nom de fichier de la première partie d'une boucle imbriquée pour l'utiliser dans la dernière partie, c'est-à-dire (tout fichier extrait de "09-10-15.zip" sera nommé "fichier1.09-10-15", " file2.09-10-15 "...

Mais j'obtiens une valeur nulle en utilisant set FileExt = %% ~ ni si je donne la valeur static à un test, je vois que cela n'atteint pas ma dernière ligne.

Je suis maintenant officiellement complètement perdu, toute aide serait grandement appréciée.

@ECHO OFF
EnableDelayedExpansion
for /r d:\ %%j in (*.zip) do (
set FileExt="%%~ni"
"c:\program files (x86)\winzip\wzunzip.exe" -d "%%j" C:\AllDWG\
for /r C:\AllDWG\ %%i in (*.dwg) do ren "%%i" "%%~ni.%FileExt%"
)
Mark K
la source

Réponses:

0

J'essaie d'acquérir le nom de fichier à partir de la première partie d'une boucle imbriquée

@ECHO OFF
EnableDelayedExpansion
for /r d:\ %%j in (*.zip) do (
set FileExt="%%~ni"
"c:\program files (x86)\winzip\wzunzip.exe" -d "%%j" C:\AllDWG\
for /r C:\AllDWG\ %%i in (*.dwg) do ren "%%i" "%%~ni.%FileExt%"
)

Il y a plusieurs erreurs dans votre fichier de commandes.

EnableDelayedExpansion

C’est la mauvaise syntaxe (voir expansion retardée ), CA devrait etre setlocal enabledelayedexpansion.

set FileExt="%%~ni"

La variable i est indéfini à ce stade (votre premier for la boucle utilise %%j ), il devrait donc être set FileExt="%%~nj".

for /r C:\AllDWG\ %%i in (*.dwg) do ren "%%i" "%%~ni.%FileExt%"

Tu dois utilisation la expansion retardée Ici comme %FileExt% a une valeur différente à chaque passage dans le contenant for boucle, alors il devrait être !FileExt!.

Essayez le fichier de commandes suivant (non testé car je n’ai pas de fichier zip approprié):

@echo off 
setlocal enabledelayedexpansion
for /r d:\ %%j in (*.zip) do (
  set FileExt="%%~nj"
  "c:\program files (x86)\winzip\wzunzip.exe" -d "%%j" C:\AllDWG\
  for /r C:\AllDWG\ %%i in (*.dwg) do ren "%%i" "%%~ni.!FileExt!"
  )
endlocal  

Lectures complémentaires

DavidPostill
la source
@DavdPostill Merci, cela a fonctionné parfaitement. il ne m'est jamais venu à l'esprit que %% ~ ni faisait référence au compteur, chaque exemple, y compris l'aide en ligne, avait ni. Et merci pour les références, j'ai eu du mal à trouver ce dont j'avais besoin pour cette première tentative.
Mark K