[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何替换文件内容?

求一批处理文件。

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

如附件12345.bat文件   

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

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

请高手指点。

保存为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
)

TOP

好得你说的是第十六行,否则你死悄悄了!
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

谢谢上面2位高手,真是不知道用什么语言能表达现在心情,,真是万分感谢。。都能实现,都是高人。

TOP

  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. )
复制代码

TOP

本帖最后由 乱码 于 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行进行从写、
如果是其他行的话,自己看情况修改对应行就好了、
1

评分人数

TOP

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

有人能帮下忙吗。批处理和VBS都可以,只要能实现这功能就行。万份感谢!

TOP

返回列表