【问题标题】:Batch Script Removing characters from a variable inside a FOR loop批处理脚本从 FOR 循环内的变量中删除字符
【发布时间】:2011-09-20 18:13:18
【问题描述】:
SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%A IN (*.*) DO (
 SET var=%%A
 ECHO !var:~0,-4!
)

由于我们在 FOR 循环中迭代变量,因此您必须在变量周围使用 !,但是,结合方法 :~#,-# 从变量末尾删除字符,它不会拿走。

在我的示例中,我们只是从文件名中删除扩展名。我知道您可以使用%%~nA 来获取文件名,但这只是一个使用示例。

有没有办法在 FOR 循环中做到这一点?也许与我使用的方法不同?

【问题讨论】:

  • 您发布的上述示例对我有用 - 也就是说,它删除了文件名中的最后 4 个字符(如果文件名中的字符超过 4 个)。
  • 这对我来说没问题。我只是复制了这个,没有做任何改变,只是在开头添加了@ECHO OFF。运行此脚本时有什么特别的问题?
  • LOL 我想我在不知不觉中解决了自己的问题 =/。现在,如果我能在 XD 之前弄清楚我做错了什么就好了。

标签: variables for-loop expand batch-file


【解决方案1】:

如果set var=%%A后面有隐藏空格,它可能会失败。
然后你只删除空格,因此最好使用

set "var=%%A"

它独立于隐藏的空格,即使是最后一个引号后面的字符也会被忽略。

但也许你的问题是完全不同的类型?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-17
    • 1970-01-01
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 2016-06-04
    • 2020-11-13
    • 2023-04-02
    相关资源
    最近更新 更多