我正在尝试在文件中编写命令行的第一个参数,但它在命令行中工作,而不是拖放。
非常简单的批处理文件(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"
)< / p>
有任何解释吗?
答案 0 :(得分:2)
我不确定您的确切环境,但如果我必须打赌,当前的活动目录就是问题
将您的test_echo.cmd
替换为
@echo off
for %%a in (.) do echo %%~fa
pause
然后通过双击并拖放文件来执行文件。在这两种情况下,您都会看到已启动的cmd
进程的当前活动目录。
为什么这有关系?由于您没有在原始文件重定向中包含路径,因此将在当前活动目录中创建此文件,该文件可能不是您所期望的。
您可以找到更多信息here
快速解决方案,
@echo OFF
> "%~dp0\echo_arg_in_file.txt" echo %1
将在包含批处理文件的同一文件夹中创建文件
答案 1 :(得分:0)
Windows版本。出于安全原因,Vista无法拖放到命令提示符中。受限制的可能性在以后的版本中(因为我们都发牢骚)。
在Vista之前,如果拖入窗口,则与键入文件名相同。
如果谈论快捷方式,每个文件都是一个参数(使用shift
命令来处理这个)。