将shell修改为bat脚本

下面是两个脚本,通过test.sh 调用mds.sh,希望能修改为.bat或.py
mds.sh脚本:
d=$1
f=$2
mkdir $d ${d}_1
while [ 1 ];
do
mkdir $d ${d}_1
touch $d/$f
for kk in {1..10}
do
touch $d/${f}${kk} # mkdir $d/${d}${kk}
done
mv $d/$f $d/${f}_mv
mv $d/${f}_mv $d/$f
mv $d/${f}* ${d}_1/
mv ${d}_1/* ${d}/
mv ${d} ${d}2
mv ${d}2 ${d}
rm -rf ${d}/*
rm -rf $d/
rm -rf ${d}_1/
rm -rf ${d}2
done

test.sh脚本:
for i in {1..5} ;
do
for j in {1..5}
do
sh mds.sh $i $j > /dev/zero 2>&1 &
done
done

我不是很了解linux的代码,所以有以下几个问题要搞清楚一下。
for j in {1..5}这样的命令是不是for循环赋予变量$j为1至5,这几个数字?
d=$1
f=$2是不是获取test.sh中$i $j对应的值,也就是1至5,这几个数字?d=$1=$i 和 f=$2=$j
${d}是获取什么的值?日期? ${f}又是获取什么的值?
${kk}应该是for kk in {1..10}中赋予的数字对吧?
顺便查了一下资料touch命令是修改文件或文件夹的创建,修改等日期的,但是Windows命令中没有类似的命令啊!这怎么整?追问

for j in {1..5} 确实是为$j赋值
d=$1 f=$2 这个是获取test.sh中 $i $j的值,将$i 与$j的值赋给 d与f
${d}是获取什么的值? $d是调用i的值,将$i的值赋给d
${kk}应该是for kk in {1..10} 分10次将1-10中的数字赋给kk
里面的touch是用来创建文件的,windows中可以用echo 来实现

追答

@echo off
for /l %%i in (1,1,5) do (
for /l %%j in (1,1,5) do (
md %%i %%i_1
echo,>%%i\%%j
for /l %%k in (1,1,10) do (
echo,>%%i\%%j%%k
md %%i\%%i%%k
)
move %%i\%%j %%i\%%j_mv
move %%i\%%j_mv %%i\%%j
move %%i\%%j* %%i_1\
move %%i_1\* %%i\
move %%i %%i2
move %%i2 %%i
rd /s /q %%i %%i_1 %%i2
)
)
pause

以上代码为两个脚本的整合
顺便提一下,你的mds.sh中touch $d/${f}${kk} # mkdir $d/${d}${kk}是创建一个文件和一个文件夹吗?而且还是同名的,对吧?
但我要告诉你,微软系统,在同一目录下不允许存在同名的文件夹和文件,所以在bat脚本中我优先生成文件,然后生成目录,这就会导致文件生成后,文件夹将无法创建。具体过程情况,请在代码中相应位置用pause暂停命令截断一下后,看生成结果。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答