2015-06-21 6 views
0

Я попытался добавить кавычки вокруг файловых путей и заменить кавычки на 0x22. Также попробовали другие переменные, и все они возвращают такую ​​же ошибку. Пробовал один равный, два равных, все капиталы ... Все выглядит правильно, но я не понимаю, почему он не работает, был бы признателен за любую помощь. Благодарю.FORFILES Недопустимый аргумент/параметр

set source=N:\Movies\ 
set target=M:\Movies\ 

forfiles /P "%source%" /C "cmd /c if @isdir==TRUE (mklink /d 0x22%target%\@file\0x22 @path) else (mklink 0x22%target%\@file\0x22 @path)" 

Это ошибка:

ERROR: Invalid argument/option – '@isdir==TRUE'. 
+0

[ http://stackoverflow.com/q uestions/1039221/forfiles-batch-script-escaping-character] (http://stackoverflow.com/questions/1039221/forfiles-batch-script-escaping-character) –

ответ

1

вам нужно лечить @isdir как строка

@isdir Returns "TRUE" if a file type is a directory, 
      and "FALSE" for files. 

Итак: @isdir=="TRUE"

Источник: http://ss64.com/nt/forfiles.html

+0

Это приводит к: ОШИБКА: Неверный аргумент/параметр - '@isdir' – dtgq

+0

Извините, что преждевременно нажал кнопку ответа. Это тоже не сработало, но в примерах они фактически используют его без кавычек, если isdir == FALSE Я попытался переключить его на ЛОЖЬ, и он все еще не работает. – dtgq

+0

Ну, это сработало, все еще не знаю, почему переменные не будут работать наоборот: 'N: cd movies forfiles/C" cmd/c if @ isdir == TRUE mklink/d M: \ Фильмы \ @file \ @path " forfiles/C" cmd/c if @ isdir == FALSE mklink M: \ Movies \ @fname @path " По-прежнему важно, чтобы я понял это первым способом, чтобы я мог автоматизировать эту задачу. – dtgq

Смежные вопросы