2015-06-21 58 views
0

我試圖在文件中編寫命令行的第一個參數,但它在命令行中運行,而不是通過拖放操作。DOS批處理:命令行和拖放之間的不同行爲

的非常簡單的批處理文件(test_echo.cmd)是如下:

@echo OFF 
echo %1 > echo_arg_in_file.txt` 

在命令行上,

C:\rep>test_echo.cmd "C:\rep\fichier de test.txt"` 

創建echo_arg_in_file.txt"C:\rep\fichier de test.txt"內寫入一個文件。

但隨着一拖和批處理文件的文件"C:\rep\fichier de test.txt"的下落,沒有任何反應......

任何解釋器(測試刪除> echo_arg_in_file.txt是以前和顯示器以及"C:\rep\fichier de test.txt"做)?

回答

2

我不知道您的精確環境,但如果我有賭,當前的Active Directory的問題

替換您test_echo.cmd

@echo off 
    for %%a in (.) do echo %%~fa 
    pause 

然後執行文件都通過雙擊它通過拖放文件。在這兩種情況下,對於已啓動的cmd進程,您將看到當前活動目錄

爲什麼這是相關的?由於您沒有在原始文件重定向中包含路徑,因此該文件將在當前活動目錄中創建,這可能不符合您的期望。

你可以找到更多信息here

對於一個快速的解決方案,

@echo OFF 
> "%~dp0\echo_arg_in_file.txt" echo %1 

將在持有該批處理文件

+0

是的,這就是它的同一文件夾中創建文件!非常感謝!!! –

0

什麼是Windows的版本。出於安全原因,Vista無法拖放到命令提示符中。受限制的可能性在更高的版本(因爲我們都發出嗚嗚聲)。

在Vista之前,它與輸入文件名相同,如果拖入窗口。

如果說一個快捷方式,每個文件都是一個參數(使用shift命令來處理這個)。