批处理脚本将获取文件名并在Linux中重命名这些文件

时间:2015-12-30 12:22:24

标签: batch-file

我试图创建一个批处理脚本来获取所有文件(使用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服务器的所有名称的文本文件。

2 个答案:

答案 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