为什么子串不起作用?

Jon*_*ger 3 loops for-loop substring batch-file

使用这个批处理文件我想要压缩一些*.txt文件.每个*.txt文件都在自己的zip文件中.不幸的是它不起作用,我得到了输出

ECHO is disabled (OFF).
Run Code Online (Sandbox Code Playgroud)

几次.这是源代码:

@echo off
setlocal EnableDelayedExpansion

for %%i in (*.txt) do (
    set filename = %%i
    set filenametrunc = %filename:~0,10%

    7z a -tzip -mx0 %zipname%
    echo %filename% zipped.
)
Run Code Online (Sandbox Code Playgroud)

我读了一些关于EnableDelayedExpansion的内容并将其激活.不能让它工作.

任何帮助赞赏.

Han*_*ood 6

您需要使用SetLocal EnableDelayedExpansion和包装变量!.另外,不要在变量名,等号和值之间放置空格.

set filename = ...使名为变量%filename %与值 ...
set filename=.....使名为变量%filename%与值.....

@echo off
setlocal EnableDelayedExpansion

for %%i in (*.txt) do (
    set filename=%%i
    set filenametrunc=!filename:~0,10!

    7z a -tzip -mx0 !zipname!
    echo !filename! zipped.
)
Run Code Online (Sandbox Code Playgroud)

%括号内的变量同时被评估,这是在整个循环开始执行之前.您之前的代码将在set语句运行之前扩展所有变量.