我正在尝试将一系列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命令循环使用通配符的目录中的所有文件夹,那么我将如何在每个文件夹上执行我需要的一系列命令?
感谢。
答案 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?