【问题标题】:Simple .BAT file rename issue简单的 .BAT 文件重命名问题
【发布时间】:2015-08-05 15:48:56
【问题描述】:

好的,这是我的问题。

我有一个程序 (program1),它在运行时会查找一个 INI 文件,该文件中存储了有关用户的信息 (userinfo.ini)。该程序不支持多用户,所以我的想法是有两个INI文件,一个用于user1,另一个用于user2。但是,INI 文件名必须保持命名为 userinfo.iniprogram1 将无法识别它的存在。

所以这是我的计划,

我在程序的根文件夹中有两个 INI 文件。一个名为userinfo.ini.USER1,另一个名为userinfo.ini.USER2

单击user1 的BAT 文件时,我希望它检查userinfo.ini.USER1 是否存在,如果存在,将userinfo.ini 重命名为userinfo.ini.USER2,然后将userinfo.ini.USER1 重命名为userinfo.ini。如果userinfo.ini.USER1 不存在,它什么也不做。

user2 的 BAT 文件基本上会做同样的事情,只是翻转了。

完成后,BAT 文件将执行program1

这是我为此编写的代码:

IF EXIST userinfo.ini.USER1
ren userinfo.ini userinfo.ini.USER2
ren userinfo.ini.USER1 userinfo.ini

START program1.exe

但是,当运行时,CMD 告诉我The syntax of the command is incorrect.

我如何错误地编码,应该如何编码以实现我的目标?

提前感谢您的所有帮助,非常感谢。

【问题讨论】:

    标签: windows batch-file cmd rename


    【解决方案1】:

    if exist file 没有任何意义,因此会出现语法错误。您需要在它之后添加一个命令语句 (if exist file echo yes)。您可以使用() 将多个命令作为语句执行:

    IF EXIST userinfo.ini.USER1 (
      ren userinfo.ini userinfo.ini.USER2
      ren userinfo.ini.USER1 userinfo.ini
    )
    START program1.exe
    

    请确保第一个 ( 与您的 if 位于同一行

    【讨论】:

    • 解决了!谢谢你的帮助。出于好奇,您说我需要一个回显语句,但是在您提供的代码中,没有回显。你这是什么意思?
    • 你不需要echo,只需要一个命令语句。 echo 只是一个例子。
    【解决方案2】:

    这是另一种选择:与其重命名任何东西,不如直接复制它们?

    User1.bat:

    copy userinfo.ini.USER1 userinfo.ini
    START program1.exe
    

    User2.bat:

    copy userinfo.ini.USER2 userinfo.ini
    START program1.exe
    

    【讨论】:

    • 这也是我的第一个想法。但是,如果program1.exe 对 ini 文件进行更改(比如写“上次登录日期”)怎么办?
    • 您可以将 /WAIT 添加到 START 行,以便批处理文件等待 program1 结束,然后通过添加另一行来执行相反的操作:复制 userinfo.ini userinfo.ini.USER?我提供它是因为提问者没有提到任何有关 ini 文件更改的信息,但这是一个很好的问题。
    猜你喜欢
    • 2014-06-07
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多