本帖最后由 pcl_test 于 2018-4-20 16:59 编辑
拖曳打开传递参数之重定向到文本
引出话题:
昨天写此贴http://bbs.bathome.net/thread-5182-1-1.html四楼代码时,最初没有采用交互,采用直接拖曳处理的方式。但是让我惊讶的发现,结果不能重定向到文本,后面修改代码采用set/p接受变量才成功。
相关帖子还有:
《怎样使文件拖拽到批处理上就其执行命令?》
http://bbs.bathome.net/thread-5202-1-1.html
于是我就做了下面测试:
描述:
拖动的文本文件,测试文本.txt(下面简称a),内容如下:复制代码 用来处理的批处理文件(拖曳到的对象)为test.bat(下面简称b)
测试一:
test.bat代码为:- @echo off
- echo 123
- echo 123 >测试重定向.txt
- pause
复制代码 直接运行当然能生成 测试重定向.txt;把a拖到b,只显示第一个echo回显的“123”,而第二个重定向没有执行,没有生成 测试重定向.txt
测试二:- @echo off
- echo 123
- echo 123 >%1.txt
- pause
复制代码 测试一改为这样能生成 测试文本.txt.txt
测试三:- @echo off
- echo 123
- echo 123 >"%~nx1.txt"
- pause
复制代码 a托到b,又不能生成
测试四:- @echo off
- for /f "usebackq delims=" %%i in ("%~1") do echo %%i>>测试重定向.txt
- pause
复制代码 a托到b,直接显示没问题;重定向就不行了,根本就不生成 测试重定向.txt 这个文件
测试五:- @echo off
- for %%i in (%1) do cd.>%%i.txt
- pause
复制代码 a托到b能生成目标文件
测试六:- @echo off
- for /f "usebackq delims=" %%i in ("%~1") do cd.>%%i.txt
- pause
复制代码 a托到b不能生成目标文件
感谢各位的回帖,问题原因已水落石出:
双击打开批处理,默认目录为当前目录
把文件拖到批处理上,启动目录是“%USERPROFILE%”
处理方法见5楼
[ 本帖最后由 zhouyongjun 于 2009-7-13 12:28 编辑 ] |