[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理直接双击运行与命令行下运行的区别?

求问:写了一个小文件,内容如下
@echo off
for /f "delims=" %%i in (22.text) do (if not defined %%i set %%i=A && echo %%i>>33.text)
pause

双击该.bat文件时运行正常,产生了33.txt文件
但是在命令行下运行时,运行没有出错,但是没有产生33.txt文件

求问,这是为什么,两个运行方式有区别吗??
谢谢谢谢
1

评分人数

    • Batcher: 请编辑自己的帖子,把代码放到code标签里面 ...PB -2

自己顶一个,没人知道吗

TOP

因为你在命令行下运行后,环境变量就留在了那个窗口(进程),你再次运行时,就已经有那些变量了。

可以加一个 setlocal,这样批处理退出后变量会跟着清除:
  1. @echo off
  2. setlocal
  3. for /f "delims=" %%i in (22.text) do (if not defined %%i set %%i=A && echo %%i>>33.text)
  4. pause
复制代码
1

评分人数

    • mstsc: 学习到点东西技术 + 1

TOP

是把代码复制到cmd中运行还是在窗口中调用bat呢?

TOP

3# tmplinshi


感谢版主,但是我加了setlocal之后还是没有产生33.text文件,不知道是为什么?

TOP

4# zm900612


不是复制进去,是用它的名字调用

TOP

好莫名啊!!!

TOP

求问:写了一个小文件,内容如下
@echo off
for /f "delims=" %%i in (22.text) do (if not defined %%i set %%i=A && echo %%i>>33.text)
pause

双击该.bat文件时运行正常,产生了33.txt文件
但是在命令行下运行时,运行没有出错,但是没有产生33.txt文件 ...
nomaze 发表于 2011-6-29 14:30


你代码中输出的文件是 33.text,而你运行批处理后寻找的是 33.txt

TOP

8# tmplinshi


哦哦,我写错了,是33.txt,反正我改成33.txt之后,还是一样,我后面没有进行批处理寻找,就是在文件夹中没看到有生成33.txt文件

TOP

本帖最后由 tmplinshi 于 2011-6-29 15:13 编辑

另外一个情况:

e:\我的文档\桌面>c:\test.bat


比如上面的例子,有没有可能你运行后,是在 c:\ 下找 33.text,而实际上 33.text 是生成到了 e:\我的文档\桌面\。

TOP

10# tmplinshi


不是的,我是在当前运行脚本的文件夹中找的,而且双击该脚本的时候所产生的33.txt是在当前文件夹下的,太妖怪了!!

TOP

10# tmplinshi


我把cmd.exe关了之后重新开了一下,问题解决了,虽然不知道为什么。。。
谢谢你拉,呵呵

TOP

10# tmplinshi


我把cmd.exe关了之后重新开了一下,问题解决了,虽然不知道为什么。。。
谢谢你拉,呵呵
nomaze 发表于 2011-6-29 15:18

就是 3 楼说的原因。

TOP

13# tmplinshi


嗯,应该是的,不过不太懂原理,不知道究竟是停留在了哪个窗口(进程)了

TOP

返回列表