将文件复制到随机命名的子目录

将文件复制到随机命名的子目录

我对 shell 脚本完全是外行,所以有点力不从心。但我有一个现有的脚本,它几乎可以完成它的工作,我希望编辑它以使其正常工作。

因此,现有脚本的全部内容如下

copy css\* "%USERPROFILE%\Documents\BYOND\cache" /y
copy images\* "%USERPROFILE%\Documents\BYOND\cache" /y
copy js\* "%USERPROFILE%\Documents\BYOND\cache" /y
copy templates\* "%USERPROFILE%\Documents\BYOND\cache" /y

看起来很简单,它只是将四个子文件夹中的所有文件复制到缓存目录中。问题是,缓存并不是文件需要存放的确切位置。它们需要存放到缓存的子文件夹中。但该子文件夹有一个随机生成的名称,通常类似于“tmpXXXX”,其中 X 是一个随机的 4 位数字,并且每次会话都会删除并重新创建(使用新的随机生成名称),所以我不能在这里直接输入子文件夹。

我可以保证缓存中只有一个子文件夹。所以我只需找到那里的文件夹并将文件复制到其中即可。

你知道我该如何做这件事吗?

答案1

如果缓存文件夹下只有一个文件夹,则将for loop结果仅复制到该文件夹​​。实际上,它for loop适用于每个命令。Switch/D将返回文件夹名称;在您的情况下只有一个。

FOR /D %%i IN (%USERPROFILE%\Documents\BYOND\cache\*) DO (copy css\* %%i /y)
FOR /D %%i IN (%USERPROFILE%\Documents\BYOND\cache\*) DO (copy images\* %%i /y)
FOR /D %%i IN (%USERPROFILE%\Documents\BYOND\cache\*) DO (copy js\* %%i /y)
FOR /D %%i IN (%USERPROFILE%\Documents\BYOND\cache\*) DO (copy templates\* %%i /y)

相关内容