使用Windows复制并重命名多个目录中的多个文件CMD行
问题描述:
我想要复制和重命名存储在一堆目录(年,月,日)中的文件。这些文件是.ers
文件,我需要它们来保持其扩展名,但从file.ers
到file_cloud.ers
。 然后,我希望每个月的文件在cloud
文件夹中保存。 理想情况下,我会在Windows命令行中执行此操作。 我知道一个批处理文件是一个很好的开始,所以我有以下 - 这不包括保存在不同的位置 - 但我只是在复制和重命名。使用Windows复制并重命名多个目录中的多个文件CMD行
for /D %%y in ("C:\Data\20*") do (
pushd "%%~y"
for /D %%m in ("*") do (
pushd "%%~m"
for /D %%d in ("*") do (
pushd "%%~d"
for %%f in (soig_*.ers) do copy "%%~f.ers" "%%~f_cloud.ers"
popd
)
popd
)
popd
)
答
这可能比你做得更容易。如果这反映了正确的复制命令,请删除echo
。你可以通过将你的头部朝下放到FOR /?
的输出中来获得。
FOR /F "usebackq tokens=*" %%f IN (`DIR /S /B /A:-D "*.ers"`) DO (
echo COPY "%%~f" "%%~dpnf_cloud.%%~xf"
)
答
下应该工作没关系你,(它应该是所有匹配.ers文件与更新的名字在他们的树的上一级复制到现有云目录)。
@FOR /D %%Y IN ("C:\Data\20*") DO @FOR /D %%M IN ("%%Y\*"
) DO @FOR /D %%D IN ("%%M\*") DO @IF /I NOT "%%~nxD"=="cloud" FOR %%F IN (
"%%~D\soig_*.ers") DO @COPY "%%F" "%%~M\cloud\%%~nFcloud%%~xF">NUL
我没有将任何东西,以防止文件的名字已经存在,云目录
类型'为/?'内进入命令提示符窗口,阅读帮助,特别是与部分重写'〜'修饰符... – aschipfl
在副本前面插入一个回显,并查看必须更改的内容。 – LotPings
是否要将重命名的文件从day文件夹复制到位于月份文件夹内的新'cloud'文件夹,还是希望将day文件夹也复制到'cloud'文件夹中?例如:'2017 \ 04 \ 25 \ soig_file.ers'到'2017 \ 04 \ cloud \ soig_file_cloud.ers'或者'2017 \ 04 \ 25 \ soig_file.ers'到'2017 \ 04 \ cloud \ 25 \ soig_file_cloud .ers'? – aschipfl