使用批处理文件替换文本文件中的某些单词


4

我正在尝试使用批处理文件来确定当前安装的驱动器号,并用该驱动器号替换ini文件中的关键字。

基本上,ini文件包含:

[app]  
dir=Drive\ApplicationPath  
path=Drive\ApplicationPath\Messenger.exe  
ver_number=12091  
lang=1033  
theme=default  
ver=intl  
[applist]   
Cafe=Drive\ApplicationPath\ApplicationData  
im=Drive\ApplicationPath1\ApplicationData  

等等。

我正在尝试将bat文件放入包含此app.ini文件的目录中,以检测当前驱动器。某些用户可能在D:,E:,F:中有此目录,然后重写此app.ini文件,将单词“ Drive”替换为驱动器号D:,E:或F:

我已经考虑过使用令牌和派生类,但是我不确定如何解决。有什么专家建议吗?我只在寻找批处理方法,因为批处理文件将满足我的所有需求(检测Windows XP或7,x86或x64,并最终将此ini文件复制到要运行的OS上正确的文件夹中)。



Answers:


2

在您的批处理文件中,用于%CD:~0,2%替换Drive

CD是Unix命令pwd的DOS等效文件。这两个命令都输出当前路径。由于您只需要驱动器号,因此我们只想获取输出的前两个字母。

Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

C:\Users\me>echo %CD%
C:\Users\me

C:\Users\me>echo %CD:~0,2%
C:

来源:Windows批处理脚本获取当前驱动器名称


1
这是有用的,但什么是添加到批处理文件,这样我就可以替换命令Drive%CD:~0,2%测试文件吗?
Tobias

1

如果您已安装vim(完全使用命令行模式)

vim app.ini -c "%s/Drive/%cd:~0,2%/g|wq"

它将取代字驱动器与驱动器(信和结肠,例如app.ini文件中c:),你在


1
约翰给了你完整的答案。如果您在C盘中,%cd:〜0.2%将为您提供C:文本。他的回答实际上将在app.ini文件中替换所有出现的Drive到C:单词。例如, “DIR =驱动\ ApplicationPath”将被转换为“DIR = C:\ ApplicationPath”
太阳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.