2015-04-29 2 views
0

Я пытаюсь использовать answer posted in another Stackoverflow postПроверка, существует ли каталог, используя пакетный файл

Согласно этому сообщению, я должен быть в состоянии использовать следующий пакетный скрипт, чтобы проверить, если ссылка является каталогом

if exist %1\* echo Directory 

Однако я не уверен, как я должен использовать это.

Я попытался заменить

if exist %1\* echo Directory 

с

SET "t=%USERPROFILE%\Desktop\testDir" 
if exist %t\* echo Directory 

Но это не эхо из каталога, как он должен (каталог testDir существует на моем рабочем столе)

ли на% 1 в этом контексе что-то представляет?

+1

Прошло уже много лет с тех пор, как я в последний раз написал сценарий оболочки DOS/Windows (это MS-оболочка, верно?), Поэтому я не могу вспомнить много вещей. % 1 - это первый параметр вашего скрипта, например. если вы запустите 'myscript.bat testDir', то% 1 будет« testDir ». Я подозреваю вашу строку' SET', для целей отладки я бы включил строку 'echo% t', чтобы проверить, соответствует ли значение переменной . – GergelyPolonkai

+0

Возможный дубликат [Проверка наличия папки с использованием .bat-файла] (http://stackoverflow.com/questions/21033801/checking-if-a-folder-exists-using-a-bat-file) – aschipfl

ответ

0

Я обычно использую:

if exist %1\. echo Directory 

EDIT: Предположим, что% 1 является каталогом, то. это «файл», который всегда существует, поэтому его присутствие гарантирует, что это каталог, а не файл.

+0

Почему не объясните, почему вы используете **% 1 \. ** вместо **% 1 \ *** и как его использовать, ваш ответ не позволяет многого ... – donttellthem

0

%1 - первый параметр командной строки.

C:\Users\User>if exist c:\windows echo windows exist 
windows exist 

C:\Users\User>if exist c:\windows1 echo windows exist 

C:\Users\User> 

И список некоторых знаков препинания

& seperates commands on a line. 

&& executes this command only if previous command's errorlevel is 0. 

|| (not used above) executes this command only if previous command's errorlevel is NOT 0 

> output to a file 

>> append output to a file 

< input from a file 

| output of one command into the input of another command 

^ escapes any of the above, including itself, if needed to be passed to a program 

" parameters with spaces must be enclosed in quotes 

+ used with copy to concatinate files. E.G. copy file1+file2 newfile 

, used with copy to indicate missing parameters. This updates the files modified date. E.G. copy /b file1,, 

%variablename% a inbuilt or user set environmental variable 

!variablename! a user set environmental variable expanded at execution time, turned with SelLocal EnableDelayedExpansion command 

%<number> (%1) the nth command line parameter passed to a batch file. %0 is the batchfile's name. 

%* (%*) the entire command line. 

%<a letter> or %%<a letter> (%A or %%A) the variable in a for loop. Single % sign at command prompt and double % sign in a batch file. 

И если вы хотите знать, если каталог или файл.

@Echo off 
pushd %1 >nul 2>&1 
If errorlevel 0 if not errorlevel 1 Echo %~nx1 is a folder 
If errorlevel 1 Echo %~nx1 is not a folder 
Popd 

If /i "%cmdcmdline:~0,6%"=="cmd /c" pause 
Смежные вопросы