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

[文本处理] 批处理在不同的电脑不能运行

[复制链接]
发表于 2015-11-1 21:17:28 | 显示全部楼层 |阅读模式
  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:11 | 显示全部楼层
你把echo %date% %time%
显示出来和正常运行的电脑比较一下。
发表于 2015-11-1 21:45:21 | 显示全部楼层
本帖最后由 /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:个人建议将执行路径加上引号[以免带有空格路径会识别失败问题]

评分

参与人数 1技术 +1 收起 理由
依山居 + 1 1

查看全部评分

 楼主| 发表于 2015-11-2 08:33:24 | 显示全部楼层
楼上,我试了下你说的几点
错误点可能有几点

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:个人建议将执行路径加上引号[以免带有空格路径会识别失败问题]
 楼主| 发表于 2015-11-15 16:28:14 | 显示全部楼层
我的问题已解决,贴出来给大家参考下。原因是那三台不能运行的电脑记事本默认保存为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:35 | 显示全部楼层
回复 5# tamyfx


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

其它文本编辑器可能会默认使用utf8
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:25 , Processed in 0.018733 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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