对于文件传递参数中的每一行 - Batch Scripting

时间:2012-07-02 21:03:05

标签: bash scripting batch-file

我正在尝试将一系列bash脚本转换为批处理文件。我在脚本的一部分遇到以下问题,该部分执行以下操作:

连接到网络共享,对于具有特定根名称的每个文件夹,找到最新版本,将.zip内部复制到本地位置。它应该通过目录中的所有文件夹循环此方法,这是bash版本:

for f in /xxx/xxx/xxx.xxx.game_android*
do
        cd $f
        ls | sed 's/_//g' | sed 's/test.sh//g' | sed 's/plist.txt//g' | sed 's/^...//' > $dir/res/temp_list.txt
        sort $dir/res/temp_list.txt > $dir/res/temp_list_sorted.txt
        rm $dir/res/temp_list.txt
        export atom=`tail -n1 $dir/res/temp_list_sorted.txt`
        export final=`ls | grep "$atom"`
        rm $dir/res/temp_list_sorted.txt
        cd $final
        echo "Copying atom: $atom"
        cp *.zip $dir/res/sb5-games/
        echo "Copying File: $f"
done 

这很有效,但在尝试将其转换为批处理时,我遇到了很多问题。我能够安装GnuWin32 CoreUtils,Sed和Grep,所以我可以使用所有相同的工具,但循环遍历目录中所有文件夹的实际过程不起作用。

我的问题:我将使用什么格式的FOR命令循环使用通配符的目录中的所有文件夹,那么我将如何在每个文件夹上执行我需要的一系列命令?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用批处理文件中的以下构造遍历WhateverDirectory中的所有文件夹:

FOR /F "tokens=*" %%F IN ('DIR /AD /B WhateverDirectory' ) DO (
  PUSHD "WhateverDirectory\%%F"
  ECHO You are now in subdir %%F of WhateverDirectory
  ECHO and can do your stuff here
  ECHO etcetera
  POPD
)

好的批量指南是http://www.ss64.com/nt/或结帐What is a good windows batch scripting reference guide?