标题: [文本处理] 批处理替换字符串及文件合并 [打印本页]
作者: cwandyk 时间: 2010-11-26 16:32 标题: 批处理替换字符串及文件合并
要求如下:
1,任意拉一个文件到这个BAT文件图标上,文件本里面的代码G54替换为G55,并把本文件名加一个-G55。例如。拉AA1.NC到BAT图标上,AA1.NC文件名改为AA1-G55.NC。
2,两文件合并时,把第一个文件的最后5行删除,第二个文件的最前5行删除,并存为其它文件名。
可写成两个BAT文件,但都要支持拖放方式。合并的能够支持多文件拖放。
多谢
作者: batman 时间: 2010-11-26 16:51
第一问:- @echo off&setlocal enabledelayedexpansion
- (for /f "usebackq delims=" %%a in ("%~1") do set "var=%%a"&echo !var:G54=G55!)>"%~dpn1-G55%~x1"
- del /q %1
复制代码
[ 本帖最后由 batman 于 2010-11-26 17:13 编辑 ]
作者: cwandyk 时间: 2010-11-26 16:56
请问大大:我试了,一闪而过,文件保存在哪个目录?
作者: cwandyk 时间: 2010-11-26 16:59
另外,请问:如果我硬盘里各级子目录下有同一个非空文件夹,我想把全盘的这个目录都删除?怎么做?如果全盘有同一个文件,我又应该怎么做。因为工作时会在各种目录下产生这个目录及另一个文件。多谢
作者: batman 时间: 2010-11-26 17:14 标题: 回复 3楼 的帖子
2楼已修改,新文件在原文件所在目录中
作者: batman 时间: 2010-11-26 17:20 标题: 回复 4楼 的帖子
请不要一贴多问。。。
作者: batman 时间: 2010-11-26 17:21
第二问:- @echo off&setlocal enabledelayedexpansion
- if not exist new.txt (
- cd.>new.txt
- for /f "delims=:" %%a in ('findstr /n .* %1') do set "num=%%a"
- set /a num-=5
- for /f "tokens=1* delims=:" %%a in ('findstr /n .* %1') do (
- if %%a leq !num! echo %%b>>new.txt
- )
- ) else (
- for /f "skip=5 tokens=1* delims=:" %%a in ('findstr /n .* %1') do echo %%b>>new.txt
- )
复制代码
----------------------------------------------------------------------
支持命令行*.bat *.txt格式,不知道为什么不支持拖放,郁闷中。。。。
[ 本帖最后由 batman 于 2010-11-26 18:11 编辑 ]
作者: cwandyk 时间: 2010-11-26 17:22
原帖由 batman 于 2010-11-26 17:14 发表
2楼已修改,新文件在原文件所在目录中
老大,如果我有几个参数要改,比如,再把个S3500改为S5500,其它的不变。要怎么搞?多谢
作者: batman 时间: 2010-11-26 17:26
看来楼主是个伸手党,自己对着我的代码去改吧。。。
作者: cwandyk 时间: 2010-11-26 17:28
老大,
没有改之前为
%,MX--,
;(JIATIE COMPANY Tel:0750-3500201\3500202)
;(This post is for MC)
;(DATE=DD-MM-YY - 26-11-10 TIME=HH:MM - 08:36 )
;( D12. R0. )
G53 Z-2 S8000 M3
G71
G0 G90 G17
G51 E0.01
G04K500
G54
X21.25 Y-28.75
改了之后为:
%,MX--,
G53 Z-2 S8000 M3
G71
G0 G90 G17
G51 E0.01
G04K500
G55
X21.25 Y-28.75
Z10.
:后面的为说明。也要要的,不能删除,我就只改要改的,不改的都不能动。多谢。请再帮我改一下。。
作者: cwandyk 时间: 2010-11-26 17:30
原帖由 batman 于 2010-11-26 17:26 发表
看来楼主是个伸手党,自己对着我的代码去改吧。。。
愧疚,我批处理不怎么会。。。
作者: batman 时间: 2010-11-26 17:43 标题: 回复 10楼 的帖子
- @echo off&setlocal enabledelayedexpansion
- (for /f "tokens=1* delims=:" %%a in ('findstr /n .* %1') do (
- set "var=%%b"&echo !var:G54=G55!
- ))>"%~dpn1-G55%~x1"
- del /q %1
复制代码
[ 本帖最后由 batman 于 2010-11-26 17:51 编辑 ]
作者: cwandyk 时间: 2010-11-26 17:47
生成的文件是这样的:
G54=G55
G54=G55
G54=G55
G54=G55
G54=G55
G54=G55
G54=G55
G54=G55
G54=G55
不能用的。第一个代码生成的可以用,但冒号后面的注解也是要的,不能清除。。。再帮我改改,多谢。
作者: batman 时间: 2010-11-26 17:52 标题: 回复 13楼 的帖子
11楼已修改_|_
作者: cwandyk 时间: 2010-11-26 17:56
原帖由 batman 于 2010-11-26 17:52 发表
11楼已修改_|_
太谢谢你了。老大,你真是好人呀。。。。。已经可以了。。。文件合并的我再试试。
作者: cwandyk 时间: 2010-11-26 18:03
两文件合并的怎么用呢?我各种方法都用了,没有反应呀。
作者: batman 时间: 2010-11-26 18:08 标题: 回复 16楼 的帖子
再看我的代码及说明。。。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |