首页 > 解决方案 > 在消息中报告目录中第一个文件的文件名的批处理文件

问题描述

我正在设置一个基本的目录交换,我打算用它来在侠盗猎车手 V 的原始版本和修改版本之间切换。我正在拍摄的是一个批处理文件,它将名称交换两个目录,然后告诉我通过安装变体在主目录中的消息框。到目前为止,我有一个至少告诉我交换成功的交换器。

@echo off
ren "Grand Theft Auto V" "Grand Theft Auto V_swap"
ren "Grand Theft Auto V_mod" "Grand Theft Auto V"
ren "Grand Theft Auto V_swap" "Grand Theft Auto V_mod"
msg "%username%" "Files successfully swapped!"

我在每个根目录vanilla.txt和中添加了一个文件modified.txt,但我不知道如何进一步在消息中使用它们的名称。

如何让消息报告主目录中文本文件的名称?如果你能告诉我一个更简单的方法,加分。

标签: batch-filefilenamesswap

解决方案


因此,您只需要运行一个 for 循环,假设这些是每个目录根目录中唯一的 txt 文件:

@echo off
ren "Grand Theft Auto V" "Grand Theft Auto V_swap"
ren "Grand Theft Auto V_mod" "Grand Theft Auto V"
ren "Grand Theft Auto V_swap" "Grand Theft Auto V_mod"
for %%i in ("Grand Theft Auto V\*.txt") do msg %username% %%~ni

但是,如果您在目录中有其他文本文件,我们可以测试它们的名称,或者将您的文件重命名为某个扩展名,而不是其他任何地方。即vanilla.ren然后modified.ren简单地做:

要测试名称并仅在名称匹配时测试味精:

for %%i in ("Grand Theft Auto V\*.txt") do (
    if /i "%%~ni"=="vanilla" msg %username% %%~ni
    if /i "%%~ni"=="modified" msg %username% %%~ni
)

或虚拟扩展:

for %%i in ("Grand Theft Auto V\*.ren") do msg %username% %%~ni

推荐阅读