2014-02-18 21 views
0

В основном я просто хочу использовать переменную вместо значения permment.unlogic FOR loop in cmd

У меня есть Loop, и он работает.

set OS_ROOT=%systemdrive% 

for /f "delims= " %%A IN ('DIR E:\BACKUP /A:D /O:-D /TW /B') 
DO (xcopy/e E:\BACKUP\%%A %OS_ROOT%\TempFestplatte) 

, но как только я реализую переменную:

SET STICK_ROOT=%CD:~0,3% 

который happends быть "E: \", и использовать его в своем цикле:

for /f "delims= " %%A IN ('DIR %STICK_ROOT%\BACKUP /A:D /O:-D /TW /B') 
DO (xcopy/e %STICK_ROOT%\BACKUP\%%A %OS_ROOT%\TempFestplatte) 

это не делает работайте в любом море. и только после «DIR (...)

ПОЧЕМУ?

+2

Вы выполняете 'DIR E: \\ Backup', который даст« Синтаксис имени файла, имени каталога или тома ». Изменить 'SET STICK_ROOT =% CD: ~ 0,3%' to 'SET STICK_ROOT =% CD: ~ 0,2%' –

ответ

2

Избегайте двойной обратной косой черты в отношении корневой папки диска.

:: Set variable in terms of current directory drive 
set "STICK_ROOT=%cd:~0,2%" 

:: Set variable in terms of current batch file drive 
set "STICK_ROOT=%~d0" 

Не уверен, какой из двух будет лучше соответствовать вашему делу.

+0

Yup, я заторможен. – user2786496