无法在批处理脚本的循环内设置环境变量

Cannot set environmental variable inside a loop in a batch script

我有一个运行良好的批处理脚本,它执行以下操作:

我需要修改批处理文件以查看内容,因为一些数据可能缺少 0。我确实有如何执行此操作的逻辑,但是,我无法将逻辑添加到我的循环中因为变量不起作用。

下面是循环,我想在其中添加部分以更正缺失的前导零(即位置 4):

for /F "tokens=*" %%A in (c:\scripts\permitsin.txt) do (
  echo put %%A /qsys.lib/MAEPFTDTA.lib/PERMITIN.file/%%A >> c:\scripts\ftp-to-scoopsoft.ftp1
)

我需要做的是添加一个环境变量,它将成为文件的内容,下面是示例代码:

set /p string =< %%A
echo Value for string is set to %string%
echo %string:~9,1% | find "ECHO is on." > nul
if not errorlevel 1 goto Found0
echo no space found
goto End
:Found0
echo found space
echo below is what the correct number needs to be
echo %string:~0,3%0%string:~3% > %%A
:End

我需要这个在批处理文件中工作,因为安全要求不允许在服务器上使用 PowerShell。

for /F "tokens=*" %%A in (c:\scripts\permitsin.txt) do (
 for /F "delims=" %%S in (%%A) do (
  setlocal enabledelayedexpansion
  set "string=%%S"
  if "!string:~9,1!"==" " echo !string:~0,3!0!string:~3!> %%A
  endlocal
 )
 echo put %%A /qsys.lib/MAEPFTDTA.lib/PERMITIN.file/%%A >> c:\scripts\ftp-to-scoopsoft.ftp1
)

应该可以满足您的需要。当然是先测试样本数据。

方法如下:

如果您告诉我们您想要做什么而不是如何您想要做什么,它可以节省大量工作。