windows - ved hjælp af flere kommandoer til sløjfer i batchfiler

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger at bruge flere linjer til sløjfer uden succes - kode synes bare at bombe ud. Jeg har slået til EnableDelayedExpansion, men det synes ikke at hjælpe enten :-( Koden ser ud til at gå ud efter 'echo start for loop' .


Eventuelle ideer, hvorfor det ikke virker meget værdsat :-)


Tak, Helen.


:: script to rename tv/radio folders with issue date.

@echo off
:: All vars set in this file will be local:
SETLOCAL
setlocal EnableDelayedExpansion

:SetDate
echo.
set /P NewDate=Please enter date to rename to (yymmdd) or "x" to exit:
echo.
echo new date = \%NewDate\%
:: Loop to user input until a character is entered:
if "\%NewDate\%"=="" GOTO Error
If "\%NewDate\%"=="x" GOTO Exit
:: User has entered a value so confirm it is correct.
GOTO ConfirmDate

:ConfirmDate
echo.
set /P Confirmation=Is this date correct? (y/n):
echo.
echo confirmation = \%Confirmation\%
if "\%Confirmation\%"=="y" GOTO RenameFolders
:: Else
GOTO SetDate

:RenameFolders
:: for each folder name containing "xxx", replace "xxx" with the new date
echo.
echo start for loop
for /D \%\%D in ("?xxx*") do (
    set "PDIR=\%\%~fD" & set "NAME=\%\%~nxD"
    echo check whether folder exists
    if EXIST "!NAME:xxx=\%NewDate\%!" (
        echo.
        echo folders already exist! - remove them and try again!
        GOTO :End
    ) ELSE (
        move "!PDIR!" "!NAME:xxx=\%NewDate\%!"
    )
)
echo.
echo Folder rename is complete. Thank you.
GOTO End

:Error
echo.
echo You did not enter a date!!
GOTO SetDate

:Exit
echo.
echo User requested exit, bye bye!
GOTO End

:End
::Remember to end command for local vars:
ENDLOCAL
:: exit script

Bedste reference


Så vidt jeg kan fortælle er der intet rigtig galt med din for loop, når ingen af ​​katalogerne findes.


Problemet er, at når en eksisterende mappe er fundet, har du specifikt instrueret koden til GOTO :End, som 'bryder' ud af sløjfen.


Du bliver nødt til at beslutte, hvordan du bedst kan handle i tilfælde af eksisterende katalognavne og ændre din kode i overensstemmelse hermed.

Andre referencer 1


Tak alle sammen for din hjælp :-)


Jeg har opdaget kilden til problemet ... på en eller anden måde var mapperne indeholdende 'xxx' blevet slettet fra kilden/målkatalogen, så forløbet havde intet at arbejde med, men som ekko var blevet slukket, formodentlig savnede jeg en besked, som kunne have fået mig til at finde ud af det tidligere! Doh! Hvad en dum fejl :-( Jeg vil forsøge ikke at springe pistolen så hurtigt næste gang ...


Tak, Helen.