找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26337|回复: 5

[文件操作] [已解决]拖放文件到bat上执行没有在当前目录输出生成文本文件是什么原因

[复制链接]
发表于 2009-7-13 11:53:39 | 显示全部楼层 |阅读模式
本帖最后由 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),内容如下:
  1. a
  2. b
  3. c
  4. d
复制代码
用来处理的批处理文件(拖曳到的对象)为test.bat(下面简称b)

测试一:
test.bat代码为:
  1. @echo off
  2. echo 123
  3. echo 123 >测试重定向.txt
  4. pause
复制代码
直接运行当然能生成 测试重定向.txt;把a拖到b,只显示第一个echo回显的“123”,而第二个重定向没有执行,没有生成 测试重定向.txt

测试二:
  1. @echo off
  2. echo 123
  3. echo 123 >%1.txt
  4. pause
复制代码
测试一改为这样能生成 测试文本.txt.txt

测试三:
  1. @echo off
  2. echo 123
  3. echo 123 >"%~nx1.txt"
  4. pause
复制代码
a托到b,又不能生成

测试四:
  1. @echo off
  2. for /f "usebackq delims=" %%i in ("%~1") do echo %%i>>测试重定向.txt
  3. pause
复制代码
a托到b,直接显示没问题;重定向就不行了,根本就不生成 测试重定向.txt 这个文件

测试五:
  1. @echo off
  2. for %%i in (%1) do cd.>%%i.txt
  3. pause
复制代码
a托到b能生成目标文件

测试六:
  1. @echo off
  2. for /f "usebackq delims=" %%i in ("%~1") do cd.>%%i.txt
  3. pause
复制代码
a托到b不能生成目标文件

感谢各位的回帖,问题原因已水落石出:
双击打开批处理,默认目录为当前目录
把文件拖到批处理上,启动目录是“%USERPROFILE%”

处理方法见5楼

[ 本帖最后由 zhouyongjun 于 2009-7-13 12:28 编辑 ]

评分

参与人数 1PB +2 收起 理由
keen + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2009-7-13 12:12:11 | 显示全部楼层
是启动目录问题。

直接双击批处理,启动目录是批处理所在文件夹;
把文件拖到批处理上,我这里的启动目录是“%USERPROFILE%”;

你在批处理结尾加上 start . 就可以看到生成的文件了。

[ 本帖最后由 tireless 于 2009-7-13 12:18 编辑 ]
 楼主| 发表于 2009-7-13 12:13:34 | 显示全部楼层
哈哈,我已经找到原因了
那些“没有生成”的文件全部在C:\Documents and Settings\Administrator 下
纳闷了,为什么不在当前目录下?
用set/p 为什么就可以呢?
 楼主| 发表于 2009-7-13 12:15:09 | 显示全部楼层
呵呵,二楼比我快,刚才在发帖没看到你的回帖
发表于 2009-7-13 12:15:57 | 显示全部楼层
能生成,只是生成到了 "%userprofile%" 目录下(即执行BAT的目录下)

只要在 @echo off 下面加一句 cd/d %~dp0 就能生成到 P 所在目录了;
或加 cd/d %~dp1 生成到 拖曳文件所在目录(PUSHD 命令也行)。
 楼主| 发表于 2009-7-13 12:19:58 | 显示全部楼层
谢谢各位的回帖,以前不知道拖曳的启动目录是“%USERPROFILE%“
又学到一个知识点
感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 20:02 , Processed in 0.016633 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表