Board logo

标题: [文本处理] 批处理替换字符串及文件合并 [打印本页]

作者: 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

第一问:
  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "usebackq delims=" %%a in ("%~1") do  set "var=%%a"&echo !var:G54=G55!)>"%~dpn1-G55%~x1"
  3. 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

第二问:
  1. @echo off&setlocal enabledelayedexpansion
  2. if not exist new.txt (
  3.    cd.>new.txt
  4.    for /f "delims=:" %%a in ('findstr /n .* %1') do set "num=%%a"
  5.    set /a num-=5
  6.    for /f "tokens=1* delims=:" %%a in ('findstr /n .* %1') do (
  7.        if %%a leq !num! echo %%b>>new.txt
  8.    )
  9.    ) else (
  10.    for /f "skip=5 tokens=1* delims=:" %%a in ('findstr /n .* %1') do echo %%b>>new.txt
  11. )
复制代码
----------------------------------------------------------------------
支持命令行*.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楼 的帖子

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "tokens=1* delims=:" %%a in ('findstr /n .* %1') do  (
  3.      set "var=%%b"&echo !var:G54=G55!
  4. ))>"%~dpn1-G55%~x1"
  5. 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