标题: [文本处理] 批处理直接双击运行与命令行下运行的区别? [打印本页]
作者: nomaze 时间: 2011-6-29 14:30 标题: 批处理直接双击运行与命令行下运行的区别?
求问:写了一个小文件,内容如下
@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:39
自己顶一个,没人知道吗
作者: tmplinshi 时间: 2011-6-29 14:48
因为你在命令行下运行后,环境变量就留在了那个窗口(进程),你再次运行时,就已经有那些变量了。
可以加一个 setlocal,这样批处理退出后变量会跟着清除:- @echo off
- setlocal
- for /f "delims=" %%i in (22.text) do (if not defined %%i set %%i=A && echo %%i>>33.text)
- pause
复制代码
作者: CrLf 时间: 2011-6-29 14:56
是把代码复制到cmd中运行还是在窗口中调用bat呢?
作者: nomaze 时间: 2011-6-29 14:56
3# tmplinshi
感谢版主,但是我加了setlocal之后还是没有产生33.text文件,不知道是为什么?
作者: nomaze 时间: 2011-6-29 14:57
4# zm900612
不是复制进去,是用它的名字调用
作者: nomaze 时间: 2011-6-29 15:02
好莫名啊!!!
作者: tmplinshi 时间: 2011-6-29 15:03
求问:写了一个小文件,内容如下
@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。
作者: nomaze 时间: 2011-6-29 15:08
8# tmplinshi
哦哦,我写错了,是33.txt,反正我改成33.txt之后,还是一样,我后面没有进行批处理寻找,就是在文件夹中没看到有生成33.txt文件
作者: tmplinshi 时间: 2011-6-29 15:11
本帖最后由 tmplinshi 于 2011-6-29 15:13 编辑
另外一个情况:
比如上面的例子,有没有可能你运行后,是在 c:\ 下找 33.text,而实际上 33.text 是生成到了 e:\我的文档\桌面\。
作者: nomaze 时间: 2011-6-29 15:15
10# tmplinshi
不是的,我是在当前运行脚本的文件夹中找的,而且双击该脚本的时候所产生的33.txt是在当前文件夹下的,太妖怪了!!
作者: nomaze 时间: 2011-6-29 15:18
10# tmplinshi
我把cmd.exe关了之后重新开了一下,问题解决了,虽然不知道为什么。。。
谢谢你拉,呵呵
作者: tmplinshi 时间: 2011-6-29 15:29
10# tmplinshi
我把cmd.exe关了之后重新开了一下,问题解决了,虽然不知道为什么。。。
谢谢你拉,呵呵
nomaze 发表于 2011-6-29 15:18
就是 3 楼说的原因。
作者: nomaze 时间: 2011-6-29 15:39
13# tmplinshi
嗯,应该是的,不过不太懂原理,不知道究竟是停留在了哪个窗口(进程)了
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |