Board logo

标题: [文本处理] 批处理在不同的电脑不能运行 [打印本页]

作者: tamyfx    时间: 2015-11-1 21:17     标题: 批处理在不同的电脑不能运行

  1. @echo off
  2. copy "D:\My Documents\My Aqua notes\My Notes.txt" "E:\123\123\1.txt"
  3. set a=0311            %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%  
  4. set b=      FG                                       
  5. for /f "delims=" %%i in (1.txt)do echo %a%%%i%b%>>"E:\123\123\DJ.txt"
  6. pause
  7. del E:\123\123\1.txt
  8. del D*.txt
  9. del "D:\My Documents\My Aqua notes\My Notes.txt"
复制代码
批处理如上,我在自己的电脑上可以正常运行,我的是WIN7 64位,在XP虚拟机里也可以运行,然后在公司电脑上有3台不能运行,一台能运行,公司电脑都是XPSP3。3台不能运行的应该是这一步
set a=0311            %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%  
set b=      FG                                       
for /f "delims=" %%i in (1.txt)do echo %a%%%i%b%>>"E:\123\123\DJ.txt"
copy "D:\My Documents\My Aqua notes\My Notes.txt" "E:\123\123\1.txt"这一步能运行,能看到一个1.txt文件
为何?哪里出错?请高手帮忙下。谢谢
作者: 依山居    时间: 2015-11-1 21:43

你把echo %date% %time%
显示出来和正常运行的电脑比较一下。
作者: /zhqsystem/zhq    时间: 2015-11-1 21:45

本帖最后由 /zhqsystem/zhq 于 2015-11-1 21:47 编辑

错误点可能有几点:
1:复制时可能有同名文件[没有强制参数或强行重命名复选项]
2:每个系统的日期格式不同导致提取日期失败
3:设定变量包含空格用整体括起来set "a=1   4532  34   4533  "
4:for中如果不想保留提取的数据最后带有空格将 do (echo %%i)>>导出
5:del删除不加参数时默认不删除系统文件只读属性等...(del D*.txt,难道是删除当前位置的D开始的文件?)
6:个人建议将执行路径加上引号[以免带有空格路径会识别失败问题]
作者: tamyfx    时间: 2015-11-2 08:33

楼上,我试了下你说的几点
错误点可能有几点

1:复制时可能有同名文件[没有强制参数或强行重命名复选项]--------------------这个没有同名文件。
2:每个系统的日期格式不同导致提取日期失败-----------------------------------这个我把提取时间改成固定的字符也还是不行。
3:设定变量包含空格用整体括起来set "a=1   4532  34   4533  "-------------按你说的加了,还是一样
4:for中如果不想保留提取的数据最后带有空格将 do (echo %%i)>>导出------这个要空格的
5:del删除不加参数时默认不删除系统文件只读属性等...(del D*.txt,难道是删除当前位置的D开始的文件?)-------还没运行到这一步,因为我没看到dj.txt文件,也就是说
set a=0311            %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%  
set b=      FG                                       
for /f "delims=" %%i in (1.txt)do echo %a%%%i%b%>>"E:\123\123\DJ.txt"
这一步没有运行成功
以上,谢谢
6:个人建议将执行路径加上引号[以免带有空格路径会识别失败问题]
作者: tamyfx    时间: 2015-11-15 16:28

我的问题已解决,贴出来给大家参考下。原因是那三台不能运行的电脑记事本默认保存为unicode编码格式,要保存为ANSI格式的才行。所以我在
copy "D:\My Documents\My Aqua notes\My Notes.txt" "E:\123\123\1.txt"
下面增加一条
type 1.txt>2.txt
问题解决!
在这里还问下,为何有的电脑默认是保存unicode格式?有的默认保存ANSI格式?如何更改成自己想要的默认?
作者: 依山居    时间: 2015-11-15 17:52

回复 5# tamyfx


    echo xx>1.txt 似乎默认是utf8
右键新建是默认ANSI

其它文本编辑器可能会默认使用utf8




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2