Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 我有一个批处理文件,可以重试存储和交换设备的输出_Batch File - Fatal编程技术网

Batch file 我有一个批处理文件,可以重试存储和交换设备的输出

Batch file 我有一个批处理文件,可以重试存储和交换设备的输出,batch-file,Batch File,我的文件正在调用特定的存储阵列和开关设备,执行代码中提到的命令,并将输出保存在代码中提到的文本文件中,这是一个完美的运行,她的问题是输出文件没有以正确的方式给出。我需要在命令执行后用单独的行输出,并且必须以整洁的格式逐行输出 请对我的代码进行一些修改,并将正确的代码发送给我,以使输出对齐。好吧,我很难理解 输出文件没有以正确的方式提供。我需要在命令执行后用单独的行输出,并且必须以整洁的格式逐行输出 但让我猜猜: 您正在通过SSH在远程系统上执行命令。 您正在将SSH客户端传输回系统的输出保存为文

我的文件正在调用特定的存储阵列和开关设备,执行代码中提到的命令,并将输出保存在代码中提到的文本文件中,这是一个完美的运行,她的问题是输出文件没有以正确的方式给出。我需要在命令执行后用单独的行输出,并且必须以整洁的格式逐行输出


请对我的代码进行一些修改,并将正确的代码发送给我,以使输出对齐。

好吧,我很难理解

输出文件没有以正确的方式提供。我需要在命令执行后用单独的行输出,并且必须以整洁的格式逐行输出

但让我猜猜:

您正在通过SSH在远程系统上执行命令。 您正在将SSH客户端传输回系统的输出保存为文本文件,它们似乎没有单独的行。 看起来您的问题在于远程系统是某种类似Unix的操作系统,它使用唯一的LF ASCII字符代码0x0a作为行分隔符,而Windows使用序列CR+LF代码0x0d,0x0a用于相同的目的。 因此,由远程系统上运行的程序生成的文本在文本行之间具有单个LFs,并且当该文本保存到文本文件时 然后通过一些愚蠢的文本编辑器(如记事本)打开该文本 似乎是一个大的单行线,可能嵌入了有趣的字符 断线应该在哪里

如果我的猜测是正确的,有两种方法可以解决这个问题:

过滤您在远程计算机上执行的命令的输出 系统

基本上,这相当于更改命令

@ECHO ON
cd C:\Users\gxgopikr\Desktop\Scripts
#pause
plink.exe -ssh admin@10.0.0.34 -pw $h00tm3n0w "show version" >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ############################################################ >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

plink.exe -ssh admin@10.0.0.34 -pw $h00tm3n0w "show int brief" >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ############################################################ >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

plink.exe -ssh admin@10.0.0.34 -pw $h00tm3n0w "show environment" >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ############################################################ >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

plink.exe -ssh admin@10.0.0.34 -pw $h00tm3n0w "show logging log" >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ############################################################ >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt


findstr /i "down error warning" FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt > nul

if errorlevel 1 goto NOD
if errorlevel 0 goto DOWN



:DOWN
{
{

find /i "down" FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt > nul

if errorlevel 1 goto ERROR
if errorlevel 0 goto ONE-DOWN


:ONE-DOWN
{
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo **********Few Interfaces are Down!********** >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

goto ERROR

}


}

:ERROR
{

find /i "error" FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt > nul


if errorlevel 1 goto WARNING
if errorlevel 0 goto ONE-ERROR


:ONE-ERROR
{
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo **********There are errors!********** >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

goto WARNING

}


}

:WARNING

{

find /i "warning" FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt > nul

if errorlevel 1 goto END
if errorlevel 0 goto ONE-WARNING

:ONE-WARNING
{
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo **********There are warnings!********** >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

goto END

}

}

}

{
:NOD
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ***********No Failures!************* >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo. >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt
echo ################################################################## >> FCDCMDS_1A_%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt

goto END

}

:END
差不多

show environment | unix2dos
不幸的是,如果你在处理某种嵌入式系统 看起来你是这样做的,你的身体里并没有一个正常的外壳 SSH会话,而不是直接与特定程序对话 它解析那些显示。。。命令; 看来这正是你的情况

在客户端转换文本

我担心用cmd.exe的普通批处理语言进行此操作是错误的 不可能

您应该获得一些外部程序来进行转换,如和,然后 使用类似

show environment | unix2dos
或者用更强大的编程语言重写整个过程 我会通过WSH或Powershell选择VBScript或JScript,尽管它是 将编码为UTF-16的程序流式输出的想法可能会让您感到困惑

TL;博士 这可能是一个问题,您需要转换LFs
从远程到CR+LF序列。

这是一个很好的捕获,感谢您的解释和建议,根据您的建议,我已经进行了如下修改,但输出文件为空,没有执行它。plink.exe-sshadmin@.... -嗯。。。显示日志日志| unix2dos>>FCDCMDS_1A_1;%date:~-4,4%%date:~-7,2%%date:~-10,2%.txt请让我知道上述语法错误,否则请使用powershell或VBScript发送一个脚本。我想你理解我在旧脚本中的意思,因为我不知道这些脚本。感谢因为我只知道批处理脚本的基本知识,请使用VBScript或powershell发送脚本,即从windows server,它必须登录到我的一个交换机,执行上述命令,并使用整洁的输出文本文件保存回windows系统上的同一路径。感谢您的时间。很抱歉,我忘记了一点,脚本必须给出输出中的任何故障、错误和警告,它必须显示它的内容,以便我们能够了解确切的点,而不是搜索输出中的故障或错误。请不要介意,因为我为新脚本给您带来了很多麻烦。@CGK,对不起,这不是为了帮您解决问题。解释发生了什么以及如何进行是教育;为您编写脚本是一种支持。这些是不同的事情。所以,请你自己去解决这个问题:毕竟,这就是你每天工作美元的报酬-当然可以,科斯蒂克斯。。。我理解BU以前的语法不起作用,它给出了空白文本文件,请帮助我理解语法…{和}字符是什么?这些字符是循环的,如果输出文件中有错误或警告,它会在内部检查,如果有错误或警告,我会抛出句子。我不能跟随。无论如何,{和}对命令处理器cmd没有任何特殊意义。。。
plink.exe -ssh ... "show logging log" | unix2dos >>FILE