Linux 如何从bash生成批处理脚本

Linux 如何从bash生成批处理脚本,linux,windows,bash,batch-file,cmd,Linux,Windows,Bash,Batch File,Cmd,有人能帮我写这个脚本吗: #!/bin/bash echo "Enter filename extension and press [Enter]: " read ext cd /mnt/d/cba for i in *.$ext ; do cutext=`echo $i | rev | cut -d"." -f2- | rev` mv $i $cutext-$(date +%Y%m%d).$ext done echo Done 到windows批处理文件?谢谢。你被困在哪里了?您对哪个命令有

有人能帮我写这个脚本吗:

#!/bin/bash
echo "Enter filename extension and press [Enter]: "
read ext
cd /mnt/d/cba
for i in *.$ext ; do
cutext=`echo $i | rev | cut -d"." -f2- | rev`
mv $i $cutext-$(date +%Y%m%d).$ext
done
echo Done

到windows批处理文件?谢谢。

你被困在哪里了?您对哪个命令有问题?如果有不止一个问题,请为每个问题单独提问。我只是不知道batch的语法。这对我来说很难:cutext=echo$i | rev | cut-d-f2-| rev然后我建议打开一个新的问题,题目可能是如何使用批处理将管道的标准输出捕获到变量中,因为我认为这会引起许多人的兴趣。其中一些命令甚至在Windows中不可用。您可以自己轻松地将Windows Subsystem for Linux安装到您的Windows计算机上,只需使用Bash脚本即可。Alex,如果文件名为help.me.ext,会发生什么情况?我的解释是rev会将其更改为txe.em.pleh,然后cut-d-f2将选择em,然后rev将其更改回我。其目的可能是将me-20200302.ext作为新名称,而不是help.me-20200302.ext。此外,有比四个for/f循环更好的方法将日期字符串设置为变量,特别是当它们不是独立于语言环境时。最后,已经有一个名为date的特殊变量,不要覆盖它,选择另一个名称。cut参数是-f2-,而不是-f2,这样命令只会删除最后一个点之后的所有内容,字符串的剩余部分保留。其他建议都是有效的对不起,亚历克斯,我没有注意到,额外的-。但是,您的答案虽然被接受,但对于我的日期格式和许多其他人的,目前是不正确的,当然应该根据我的有效建议进行修改。答案是修改的。这对您来说很好,可能是Alex,但它仍然假设您的%date%和其他人的返回相同数量的字符,并且顺序相同,事实并非如此。
@ECHO OFF

SET /p ext="Enter filename extension and press [Enter]: "

CD SOME\PATH\HERE

SET YYYYMMDD=%date:~10,4%%date:~4,2%%date:~7,2%

FOR %%i in (*.%ext%) do (
MOVE %%i %%~ni-%YYYYMMDD%.%ext%
)

ECHO Done