2015-06-21 33 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命令来处理这个)。