2015-04-29 251 views
0

我試圖使用answer posted in another Stackoverflow post檢查是否存在目錄使用批處理文件

根據這個帖子,我應該可以使用下面的批處理腳本測試如果一個鏈接是一個目錄

if exist %1\* echo Directory 

但是,我不知道我應該如何使用它。

我試圖與

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

更換

if exist %1\* echo Directory 

但像它應該(在我的桌面上存在TESTDIR目錄),這並不回聲出目錄

請問1%在這個conext代表什麼?

+1

自從我上次寫了一個DOS/Windows shell腳本(這是MS shell的東西,對嗎?)以來,我已經年齡增長了,所以我不記得很多東西。 %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 

編輯:假設%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 
相關問題