我在Windows中使用批处理文件通过SSH与plink连接到Linux计算机以查看两个特定文件是否是最新的(它们必须具有今天的日期)。
我在Windows批处理文件中使用的命令来执行plink:
plink.exe -ssh root@%THEIP% -m checkfiles.txt > temp\fileDates.txt
" checkfiles.txt"在Windows计算机中包含:
ls -l /folder/*file.dat.v* /folder/*file2.dat.v* > awk '{print $7}'
然后我继续阅读" fileDates.txt"查看两个文件是否存在及其日期。
我可以删除> awk' {print $ 7}' 部分并在批处理文件上手动完成。
当文件丢失时会出现问题,例如:
ls: cannot access /folder/*file.dat.v*: No such file or directory
我在屏幕上得到按摩而不是" fileDates.txt",我只得到第二个文件的日期,没有关于找不到第一个文件的错误。
我想要出现错误"没有这样的文件......" in" fileDates.txt"所以我一直尝试不同的重定向方法无济于事。
如果这不可能,我怎么知道一个文件,另一个文件或两者都丢失了?
提前谢谢。
答案 0 :(得分:1)
您可以使用2>
来捕获错误消息:
ls -l /folder/*file.dat.v* /folder/*file2.dat.v* > awk '{print $7}' 2> sed '"s|ls: cannot access .*|No such file $name_of_variable_with_file_you_want_to_access|"
答案 1 :(得分:0)
我找到了答案。感谢@PlasmaPower的帮助(我会回复你的答案,但我没有足够的声誉)。
需要的是两行代码:
ls -l /folder/*file.dat.v* /folder/*file2.dat.v* &> $HOME/checkfiles.txt
cat $HOME/checkfiles.txt | awk '{print $7}'
第一个使用stdout和stderr执行临时文件,然后执行 awk 命令的另一行。
非常感谢!