2013-05-05 153 views
0

如果這真的很簡單,那麼我很抱歉提前編程。無法將文件路徑傳遞到批處理文件

我正在使用PA File Sight監視打開文件的文件夾。當一個文件被打開它啓動一個程序(在這種情況下批處理文件),並把整個文件路徑變量:$項目(1)$

批處理文件看起來像這樣的時刻:

set FILE_PATH="$Item(1)$" 
echo.>%FILE_PATH%_IS_OPEN 

我試圖讓該批處理文件在它的結束創建IS_OPEN一個新的文件,使用戶知道文件「是打開」

運行批處理文件將創建下列在它的文件夾:

$Item(1)$_IS_OPEN 

因此,出於某種原因它並不存儲路徑。

回答

0

我建議你嘗試

set FILE_PATH="%~1" 
echo. "%FILE_PATH%_IS_OPEN" 
echo.>"%FILE_PATH%_IS_OPEN" 
PAUSE 

這應該設置FILE_PATH該批處理文件看到的第一個參數 - 在~刪除任何封閉的報價

下一行相呼應,結果到控制檯並且如果測試證明成功則可以將其移除。

第三行將建議的文件名用引號引起來,以允許在生成的文件名中使用空格。

暫停狀態持續打開CMD窗口,直到您按ENTER以允許您查看結果。如果您的結果符合預期,它也可以被刪除。


改性「AA」

set FILE_PATH="%~1" 
FOR /f "delims=" %%i IN ("%file_path%") DO (SET dpi=%%~dpi&SET ni=%%~ni&SET xi=%%~xi) 
SET file_path=%dpi%AA%ni:~2%%xi% 
echo. "%FILE_PATH%_IS_OPEN" 
echo.>"%FILE_PATH%_IS_OPEN" 
PAUSE 

這假定它是需要更換前2個字符來替換NAME部分的第一2個字符。它的工作原理是假設變量file_path中的字符串是一個文件名,奇蹟是奇蹟。然後將dpi設置爲驅動器和路徑,ni爲名稱,xi爲擴展名。然後全名被重構,用AA爲名稱的前2個字符(dpi(路徑)+ AA + ni:2(在從第二個字符到端名稱)+ xi(分機))

+0

謝謝你今天下午試試吧,讓你知道 – 2013-05-06 02:26:18

+0

不錯。程序在啓動參數中傳遞文件名的確更有意義。 – GolezTrol 2013-05-06 19:24:14

+0

今天早上工作! (我昨晚試了一下,但沒有奏效) – 2013-05-06 19:34:01

0

$Item(1)$看起來像一個常量字符串。如果$Item(1)$是一個實際的環境變量的名字,你的第一行應該是

set FILE_PATH="%$Item(1)$%" 

雖然是一個變量似乎是一個很奇怪的名字。

+0

不幸既不選項已經奏效。 – 2013-05-06 07:11:57

+0

該程序還會發送彈出消息,$ Item(1)$被擴展爲一個路徑。我使用XP如果有什麼區別? – 2013-05-06 07:13:01

+0

這會在VBScript中更容易嗎?該程序可以觸發一個VBScript。 再次感謝 – 2013-05-06 07:17:19

相關問題