我有一个批处理文件,通过一系列中间变量计算变量:
@echo off
setlocal
set base=compute directory
set pkg=compute sub-directory
set scripts=%base%\%pkg%\Scripts
endlocal
%scripts%\activate.bat
Run Code Online (Sandbox Code Playgroud)
最后一行的脚本没有被调用,因为它来自endlocal,它破坏了scripts环境变量,但它必须在endlocal之后,因为它的目的是设置一堆其他环境变量供用户使用.
如何调用脚本的目的是设置永久环境变量,但是谁的位置是由临时环境变量决定的?
我知道我可以在endlocal之前创建一个临时的批处理文件,并在endlocal之后调用它,如果没有别的东西可以解决,我会这样做,但我想知道是否有一个不那么令人讨厌的解决方案.
为什么这个批处理文件永远不会脱离循环?
For /L %%f In (1,1,1000000) Do @If Not Exist %%f Goto :EOF
Run Code Online (Sandbox Code Playgroud)
不应该Goto :EOF突破循环?
我想我应该更明确地问... 我怎么能摆脱循环?
我见过SETLOCAL ENABLEDELAYEDEXPANSION和SETLOCAL DISABLEDELAYEDEXPANSION许多批处理文件,但什么命令实际上做?
上下文:我需要调用一个Windows批处理脚本,PATH通过xxx在其末尾添加另一条路径来更新我,但是:
xxx'到PATH' aaa;xxx;bbb'',我需要更新PATH像' aaa;bbb;xxx')aaa;bbb;xxx;xxx;xxx;...' 结束)我尝试过的:
以下功能负责处理任何重复并完成工作
:cleanAddPath -- remove %~1 from PATH, add it at the end of PATH
SETLOCAL ENABLEDELAYEDEXPANSION
set PATH=!PATH:%~2=!
set PATH=!PATH:;;=;!
set PATH=%PATH%;%~2
set P=!P:;;=;!
echo %PATH%
echo -------------
ENDLOCAL
exit /b
Run Code Online (Sandbox Code Playgroud)
但是,它需要延迟扩展本地模式,这意味着:在脚本结束时(或者在这里,在函数结束时cleanAddPath),已经设置的任何内容都被%PATH%丢弃.
我可以要求用户(我为其编写脚本)启动他们cmd的cmd /V:ON选项(激活延迟扩展,否则默认关闭),但这是不切实际的.
如何按PATH上述方式修改变量,并在调用所述脚本后仍在当前的DOS会话中更新?
我有大约1000张图像,它们的名字就像"IMG-12223".我想将它们重命名为1 2 3 4 ... 1000.我该怎么做.我写了一个批处理脚本列出文件,但我不知道如何重命名每个文件.例如,将名称为"IMG-12223"的第一个图像重命名为1,将名称为"IMG-23441"的第二个图像重命名为2,依此类推......
for /r %%i in (*) do (
echo %c%
)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用批处理文件将文件列表复制到特定目录.我需要做的第一件事是创建一个文件名列表.我在Windows Batch中看到了这篇文章创建列表或数组.以下工作正常.但我对它在一条线上的事实并不满意.随着我的文件列表变得越来越大,它变得难以阅读.
set FILE_LIST=( "file1.txt" "file2.txt" "file3.txt" )
Run Code Online (Sandbox Code Playgroud)
然后我注意到了这个博客.它创建一个包含多行的数组.
set FILE_LIST[0]="file1.txt"
set FILE_LIST[1]="file2.txt"
set FILE_LIST[2]="file3.txt"
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种创建数组的方法如下:
set FILE_LIST=( "file1.txt"
"file2.txt"
"file3.txt" )
Run Code Online (Sandbox Code Playgroud)
这样我就可以将文件名分成多行,而不需要担心索引.
我们在一个文件夹中有数百个*.pdf文件.每个*.pdf都将命名约定为ABC_100_filename.pdfor ABC_200_filename.pdf或ABC_300_filename.pdf.
在批处理脚本中,我们调用*.exe文件,如下所示:
call test.exe 100 filename
call test.exe 200 filename
call test.exe 300 filename
Run Code Online (Sandbox Code Playgroud)
由于没有IF条件来验证文件,我们错误地加载了ID不正确的文件.
预期结果:test.exe 100应该调用文件ABC_100_Testfile.pdf.
我们错误地调用test.exe 200而不是执行此文件.
如何编写IF-ELSE IF条件以在批处理脚本中调用.exe文件.
if %str1:~0,7%==ABC_100 (call test.exe 100 filename)
pause
if %str2%==ABC_200 (call test.exe 200 filename)
Run Code Online (Sandbox Code Playgroud)