我有一个名为“四月报告”的文件夹,其中包含一个月中每一天的文件夹。然后,每个文件夹都包含另一个包含PDF文件的文件夹:
四月报告 2018年1月4日 ?天报表 ?批准.pdf ?未经批准.pdf ? 2018年2月4日 ?天报表 ?批准.pdf ?未经批准.pdf ? ? 2018年4月30日 天报表 批准.pdf 未经批准.pdf
PDF每天都有相同的名称,因此我要做的第一件事是将它们上移一个级别,这样我就可以使用包含日期的文件夹名称来重命名每个文件,以便包含日期。我尝试过的脚本是这样的(在“ April Reports”中设置了路径):
$files = Get-ChildItem *\*\*
Get-ChildItem *\*\* | % {
Move-Item $_.FullName (($_.Parent).Parent).FullName
}
$files | Remove-Item -Recurse
Run Code Online (Sandbox Code Playgroud)
删除多余文件夹“ dayreports”的步骤有效,但文件尚未移动。
我有以下文件夹结构:
April reports ??01-04-2018 ? ??approved123.pdf ? ??approved123_V2.pdf ? ??unapproved123.pdf ? ??02-04-2018 ? ??approved123.pdf ? ??unapproved123.pdf ? ? ??30-04-2018 ??approved123.pdf ??unapproved123.pdf
4月份每个文件夹的每个文件夹都包含一个已批准和未批准的同名报告("approved123"或"unapproved123").有些包含V2.
我想重命名每个,以便删除"123",文件夹名称(日期)包含在文件名中,例如"approved_01-04-2018".我不想用文件夹的名称完全替换文件名,我只想在最后添加它,如果可能的话用下划线分隔.
完成后,我想删除名称中包含"未批准"的所有文件,并删除任何"已批准"文件,其中同一文件夹中有"approved_V2"(版本2取代原始文件).
第一步我尝试编写一个批处理脚本(编写批处理或PowerShell脚本的完整初学者),但它不起作用或者多次将文件夹名称添加到每个文件:
@echo off
From the folder "April Reports"
rem Process each date
for /D %%d in (*) do (
cd "%%d"
rem rename all files
for /d %%a in (*) do for %%b in ("%%~dpa\.") do ren "%%~a" "%%~nxb_%%~nxa"
)
Run Code Online (Sandbox Code Playgroud)