0
問題可以說我想要一個文件從一個位置複製到另一個與此代碼:Windows批處理循環。用雙引號
@set FILE=%1
@set SCRDIR=C:\test dir
@set DSTDIR=%SCRDIR%\temp
for %%f in ("%SCRDIR%\%FILE%") do @(
echo Copying "%%f" to "%DSTDIR%"
copy "%%f" "%DSTDIR%"
)
文件存在:
C:\test dir>dir /b copyme.txt
copyme.txt
首先,我調用腳本的名稱文件作爲參數我想複製:
C:\test dir>test.bat rename.txt
C:\test dir>for %f in ("C:\test dir\rename.txt") do @(
echo Copying "%f" to "C:\test dir\temp"
copy "%f" "C:\test dir\temp"
)
Copying ""C:\test dir\rename.txt"" to "C:\test dir\temp"
The system cannot find the file specified..
上面的複製命令失敗,因爲額外的引號,...
現在我調用腳本包含通配符*
文件名:
C:\test dir>test.bat copyme.*
C:\test dir>for %f in ("C:\test dir\copyme.*") do (
echo Copying "%f" to "C:\test dir\temp"
copy "%f" "C:\test dir\temp"
)
C:\test dir>(
echo Copying "C:\test dir\copyme.txt" to "C:\test dir\temp"
copy "C:\test dir\copyme.txt" "C:\test dir\temp"
)
Copying "C:\test dir\copyme.txt" to "C:\test dir\temp"
1 file(s) copied.
在上面的例子中,當使用通配符IM,它完美的罰款。
任何人都可以解釋這種行爲?爲什麼當我不使用通配符時,Windows會添加額外的引號?還是它省略了額外的引號,因爲即時通訊使用通配符? 我必須引用FOR
循環的路徑\文件名以處理包含空白的路徑,因此省略這些不是一個選項。