根据父文件夹和祖父文件夹名称重命名文件

时间:2017-01-13 09:38:34

标签: windows batch-file cmd

我需要Windows批处理文件在文件夹名称为&的子文件夹中为文件名前缀子文件夹名称

e.g。我有为日期12012017创建的文件夹,其结构如下

d:\12012017\1234\ABC\file1.txt
d:\12012017\1234\ABC\file2.txt
d:\12012017\5678\PQR\file3.txt
d:\12012017\2345\XYZ\file4.txt

需要他们重命名为

d:\12012017\1234\ABC\1234_ABC_file1.txt
d:\12012017\1234\ABC\1234_ABC_file2.txt
d:\12012017\5678\PQR\5678_PQR_file3.txt
d:\12012017\2345\XYZ\2345_XYZ_file4.txt

尝试使用以下代码,但无效

set mydate=%date:~0,2%%date:~3,2%%date:~6,4%
REM ECHO %mydate%
D:
CD D:\%mydate%
@ECHO STARTING RENAME
pushd D:\%mydate%
for /d %%D in (*) do (
@ECHO 1- pushd "%%D"
@ECHO CD  %%D
for /d %%X in (*) do (
@ECHO pushd "%%X"
  for /r %%F in (*) do (
 @ECHO 2- pushd "%%F"
    for %%P in ("%%F\..") do (
 @ECHO 3- pushd "%%P"
 @ECHO 4 - ren "%%F" "%%~nxD_%%~nxF"
    )
  )
)
  popd
)
popd
CD\

1 个答案:

答案 0 :(得分:2)

有更好的方法以正确的格式获取当前日期,但我会保留与区域设置相关的现有方法。

在内循环上使用FOR / F和DIR非常重要,而不是简单的FOR,因为简单的FOR可以迭代已经命名的文件,但FOR / F不会。

Eamillogin