2011-03-21 192 views
1

參考What is the best way to do a substring in a batch file?我認爲下面應該可以工作。在DOS批處理腳本中將文件寫入相對路徑

FOR %%f IN (*.wav) DO CALL :runthis "%%f" 
rem del temp.wav tmpfile 
GOTO :EOF 

:runthis 
set "outdir=%~p1\output\" 
copy "%~1" "%outdir%%~1" 

最後的命令應該dosomthing所有.wav文件在當前目錄下,並輸出到現有的子目錄「輸出」保持原來的文件名。任何想法,我要去哪裏錯了?

Update1:​​謝謝,修正了語法。我沒有注意到%pI只擴展到,沒仔細閱讀。現在,什麼是錯的是,它帶有「s擴展

dosomething "11.wav" "\Users\t4\Desktop\Airlines\WavRepeaters\\outdir\"11.wav"" 

它應該是這樣的::

dosomething "11.wav" c:\Users\t4\Desktop\Airlines\WavRepeaters\outdir\11.wav 

UPDATE2:%〜DP1 - %1擴展到一個驅動器號和唯一路徑!無報價

+0

首先請告訴我們什麼* *究竟是錯的。 – 2011-03-21 08:58:31

+1

無論如何,'%〜pI'的用法確實是錯誤的。你是什​​麼意思? – 2011-03-21 09:00:18

回答

1

主要問題似乎是使用該參數的

:跑這你使用%~pI,但沒有任何%I
另一個缺陷是文件名中的空格,然後dosomething需要引號圍繞文件名/路徑。

有了一些改變它應該工作

@echo off 
FOR %%f IN (*.bat) DO CALL :runthis "%%~f" 
rem del temp.wav tmpfile 
GOTO :EOF 

:runthis 
set "outdir=%~p1\output\" 
echo dosomthing "%~1" "%outdir%%~1" 
goto :eof 
相關問題