我试图创建一个批处理脚本来获取所有文件(使用ls
命令)并将这些文件附加到文本文件中。之后,它将查找文本文件中可用的每个文件名,并检查这些文件名是否在文件名末尾有.abc.ms
。如果.abc.ms
可用,则它将无效;如果它不可用,那么它将使用“文件名” mv
将它们(在Linux服务器上使用.abc.ms
)重命名。
下面是我的代码,我无法重命名这些文件:
E:\plink -i E:\abc.ppk user@linuxserver ls /xyz/vc/dt/bbb/toy/ >> %filetemp%
FOR /f %%F IN (%filetemp%) DO (
echo %%F >>C:\temp1.txt
::if "*lock.processed"=="%%F"
find /i "lock.processed" C:\GE_RESTRICTED\RITM\NewTask\temp1.txt
if not %errorlevel%==0 (
E:\plink -i E:\abc.ppk user@linuxserver mv %%F %%F.lock.processed
)
)
...其中%filetemp%
是用于存储来自linux服务器的所有名称的文本文件。
答案 0 :(得分:0)
如果您打开SSH shell(使用plink.exe
时实际上就是这样做),则从您正在连接的用户的主目录开始,可能类似/home/user
。由于您要重命名的文件位于其他位置(查看您的ls
命令,位置为/xyz/vc/dt/bbb/toy/
),我认为您只需要为要重命名的文件添加完整路径:
E:\plink -i E:\abc.ppk user@linuxserver ls /xyz/vc/dt/bbb/toy/ >> %filetemp%
FOR /f %%F IN (%filetemp%) DO (
echo %%F >>C:\temp1.txt
::if "*lock.processed"=="%%F"
find /i "lock.processed" C:\GE_RESTRICTED\RITM\NewTask\temp1.txt
if not %errorlevel%==0 (
E:\plink -i E:\abc.ppk user@linuxserver mv /xyz/vc/dt/bbb/toy/%%F /xyz/vc/dt/bbb/toy/%%F.lock.processed
)
)
答案 1 :(得分:0)
以下是我的问题的解决方案:
pushd C:\JobTest\src
for /f "delims=" %%f in ('dir /b /a-d-h-s') do (
echo %%f >>C:\NewTask\temp.txt
)
FOR /f %%a IN (C:\NewTask\temp.txt) DO (
::set FileName=%%~nxa
if not "%%~xa"==".processed" E:\plink -i E:\abc.ppk user@linuxserver mv /xyz/vc/dt/bbb/toy/%%~fa /xyz/vc/dt/bbb/toy/%%~nxa.processed
)
popd