Board logo

标题: [文件操作] 批处理如何替换文件内容? [打印本页]

作者: hdhyg    时间: 2012-7-18 00:34     标题: 批处理如何替换文件内容?

求一批处理文件。

把当前目E:\文件  目录下的每个.bat文件内的内容替换成本身的文件名。不带类型扩展名。

如附件12345.bat文件   

把里的1930000000改成自身的文件名123456(也就是说把每个文件的第16行ws.sendkeys后面“”里面的内容,改成自己本身的文件名。)

注:要改的都是每个文件里面都是第16的内容

请高手指点。
作者: hdhyg    时间: 2012-7-18 11:15

本帖最后由 hdhyg 于 2012-7-18 11:16 编辑

有人能帮下忙吗。批处理和VBS都可以,只要能实现这功能就行。万份感谢!
作者: 乱码    时间: 2012-7-18 11:37

本帖最后由 乱码 于 2012-7-18 11:42 编辑
path = "E:\文件"
Set fso = CreateObject("Scripting.FileSystemObject")
For Each x In fso.GetFolder(path).Files
'遍历指定文件夹里的所有文件
   
word = Split(x.OpenAsTextStream.ReadAll,vbCrLf) '以换行分割成数组
   
word(15) = "Ws.SendKeys """ & fso.GetBaseName(x.Name) & """" '对第16行重写
   
x.OpenAsTextStream(2).Write Join(word,vbCrLf) '重新写入原文件
Next

MsgBox "OK"


VBS脚本,因为数组是从0开始的,所以word(15) 表示第16行,这里是对16行进行从写、
如果是其他行的话,自己看情况修改对应行就好了、
作者: apang    时间: 2012-7-18 12:05

  1. @echo off&pushd "e:\文件\"
  2. for /f "delims=" %%a in ('dir /b *.bat') do (
  3.   setlocal enabledelayedexpansion
  4.   (for /f "usebackq delims=" %%b in ("%%a") do (
  5.     set/a n+=1
  6.     if "!n!"=="16" (echo ws.sendkeys "%%~na") else echo %%b
  7.   ))>$
  8.   move $ "%%a"&endlocal
  9. )
复制代码

作者: hdhyg    时间: 2012-7-18 12:32

谢谢上面2位高手,真是不知道用什么语言能表达现在心情,,真是万分感谢。。都能实现,都是高人。
作者: cjiabing    时间: 2012-7-18 15:38

好得你说的是第十六行,否则你死悄悄了!
作者: poter    时间: 2012-7-20 21:38

保存为stat.bat

@echo off
setlocal enableDelayedExpansion
for /f "tokens=*" %%i in ('dir /a-d /b *.bat^|findstr /v "stat.bat"') do (
        (for /f "tokens=*" %%j in (%%i) do (
                set /a a+=1
                if !a!==16 (
                        echo ws.sendkeys "%%~ni"
                ) else echo %%j
        ))>>$
        move /y $ %%i
)





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