无法在批处理脚本的循环内设置环境变量
Cannot set environmental variable inside a loop in a batch script
我有一个运行良好的批处理脚本,它执行以下操作:
- 从 sftp 服务器下载 EDI 文件
- 根据下载的文件名生成动态 ftp 脚本
- 通过 FTP 脚本将文件上传到内部 ftp 服务器
我需要修改批处理文件以查看内容,因为一些数据可能缺少 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
)
应该可以满足您的需要。当然是先测试样本数据。
方法如下:
如果您告诉我们您想要做什么而不是如何您想要做什么,它可以节省大量工作。
我有一个运行良好的批处理脚本,它执行以下操作:
- 从 sftp 服务器下载 EDI 文件
- 根据下载的文件名生成动态 ftp 脚本
- 通过 FTP 脚本将文件上传到内部 ftp 服务器
我需要修改批处理文件以查看内容,因为一些数据可能缺少 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
)
应该可以满足您的需要。当然是先测试样本数据。
方法如下:
如果您告诉我们您想要做什么而不是如何您想要做什么,它可以节省大量工作。