Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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 unixshell脚本的Windows等价物_Batch File_Unix_Windows Scripting - Fatal编程技术网

Batch file unixshell脚本的Windows等价物

Batch file unixshell脚本的Windows等价物,batch-file,unix,windows-scripting,Batch File,Unix,Windows Scripting,首先,请原谅我对windows批处理脚本(甚至是基本脚本)缺乏了解 我想寻求有关Unix脚本的帮助。这是我的工作脚本 #!/bin/bash list=`cat view_tags` for i in $list; do cleartool lsview -l -prop -full $i | grep "Last accessed" >& /dev/null if [ $? -eq 0 ]; then echo -n $i ec

首先,请原谅我对windows批处理脚本(甚至是基本脚本)缺乏了解

我想寻求有关Unix脚本的帮助。这是我的工作脚本

#!/bin/bash
list=`cat view_tags`
for i in $list; do
    cleartool lsview -l -prop -full $i | grep "Last accessed" >& /dev/null
    if [ $? -eq 0 ]; then
         echo -n $i
         echo " " `cleartool lsview -reg ccase_win -l -prop -full $i | grep "Last accessed" | awk '{print $3}'`
    else
         echo $i cannot be found
fi
done
  • “视图标记”文件包含:

    pompei.s1272.hwdig_b12.default
    dincsori.arisumf.s2637b_dig.default
    tags2
    
  • “cleartool lsview-l-prop-full$i | grep”上次访问的输出:

  • “cleartool lsview-l-prop-full$i | grep”最后访问的输出:| awk'{print$3}”

    2017-11-05T11:32:13+01:00
    2013-11-20T16:16:50+01:00
    cleartool: Error: No matching entries found for view tag "tags2".
    tags2 cannot be found
    
  • 基本上,它将在文件“view_tags”的每一行执行命令cleartool lsview-l-prop-full$i|grep“Last accessed”

    如果它在输出上找到字符串“Last Access”,它将继续打印输出,但如果没有,它将显示“not found”

    我真的希望有人能在这方面帮助我。事先非常感谢

    @Echo off&SetLocal EnableExtensions EnableDelayedExpansion
    For /f "delims=" %%A in ('Type view_tags') do (
      Set "Out=%%A can nnot be found"
      For /f "tokens=3" %%B in (
        'cleartool lsview -reg ccase_win -l -prop -full %%A ^| Find "Last accessed" 2^>Nul '
      ) Do Set "Out=%%B"
      Echo !Out!
    )
    
    • /f的第一个
      将迭代输入文件
    • 第二个将解析cleartool的输出,得到每行的第三个空格分隔字符串
    • /f的第一个
      将迭代输入文件
    • 第二个将解析cleartool的输出,得到每行的第三个空格分隔字符串

    以下批处理脚本将处理您发布的“查看标签”输入:

    应该给出以下输出(尽管我无法测试):

    如果使用以下方法,我可以消除其中一个FOR/F循环:


    以下批处理脚本将处理您发布的“查看标签”输入:

    应该给出以下输出(尽管我无法测试):

    如果使用以下方法,我可以消除其中一个FOR/F循环:


    cleartool lsview在windows系统上可用吗?有什么视图标签的示例吗?如果不是所有东西都可用,那么很难尝试和复制某些东西。请编辑问题并添加示例数据,例如视图标签,以及在最后访问的部分上使用echo时输出的样子Hello,是的,它是可用的。我们正在运行Clearcase版本8.0.1.11:)您是坚持使用Windows批处理等效程序(这需要使用附加工具,等效于bash脚本中的二进制命令),还是可以接受PowerShell解决方案(考虑到您似乎希望用bash脚本完成的任务,这实际上要简单得多)?(在我看来,您想从文件中获取文件列表,并打印每个文件的文件名和上次访问时间,对吗?)cleartool lsview在windows系统上可用吗?有什么视图标签的示例吗?如果不是所有东西都可用,那么很难尝试和复制某些东西。请编辑问题并添加示例数据,例如视图标签,以及在最后访问的部分上使用echo时输出的样子Hello,是的,它是可用的。我们正在运行Clearcase版本8.0.1.11:)您是坚持使用Windows批处理等效程序(这需要使用附加工具,等效于bash脚本中的二进制命令),还是可以接受PowerShell解决方案(考虑到您似乎希望用bash脚本完成的任务,这实际上要简单得多)?(在我看来,您希望从文件中获取文件列表,并打印每个文件的文件名和上次访问时间,对吗?)
    @Echo off&SetLocal EnableExtensions EnableDelayedExpansion
    For /f "delims=" %%A in ('Type view_tags') do (
      Set "Out=%%A can nnot be found"
      For /f "tokens=3" %%B in (
        'cleartool lsview -reg ccase_win -l -prop -full %%A ^| Find "Last accessed" 2^>Nul '
      ) Do Set "Out=%%B"
      Echo !Out!
    )
    
    @echo off
    for /f "delims=" %%A in (view_tags) do (
      for /f "tokens=3" %%B in (
        'cleartool lsview -reg ccase_win -l -prop -full "%%A" 2^>nul ^| find "Last accessed"'
      ) do echo %%A: %%B
    ) || echo %%A: Not Found
    
    pompei.s1272.hwdig_b12.default: 2017-11-05T11:32:13+01:00
    dincsori.arisumf.s2637b_dig.default: 2013-11-20T16:16:50+01:00
    tags2: Not Found
    
    @echo off
    for /f "usebackq delims=" %%A in ("view_tags") do ^
      cleartool lsview -l -prop -full "%%A" 2>nul | ^
      jrepl "Last accessed (\S+)" "$txt='%%A: '+$1" /jmatchq || echo %%A: Not Found