使用特定文件名windows 2012 R2解压缩目录和子目录中的所有文件

时间:2018-04-26 15:42:24

标签: powershell batch-file windows-server-2012-r2

我是PowerShell和批处理脚本的新手。

我有一个dir结构
 Z:\abc\data1\dump data1 (2018 01)\dumpdata1_1705_as_tap.zip
 Z:\abc\data2\dump data2 (2018 01)\dumpdata2_1801_as_tap.zip
 Z:\abc\data3\dump data3 (2018 01)\dumpdata3_1802_as_tap.zip
 Z:\abc\data4\dump data4 (2018 01)\dumpdata4_1803_as_tap.zip

我想解压所有1000多个文件,所有这些文件都具有公共名称dumpdata_yymm_as_tap.zip,如上所述。我想将所有这些解压缩到不同的目录,例如。

f:\data1\dumpdata1_1705_as_tap.zip
f:\data1\dumpdata2_1801_as_tap.zip

虽然保留了它的名字,但我希望它们在sub_directory文件夹中的特定日期之后说(2017 05)。 我们如何在批处理文件或powershell中添加正则表达式,以便仅在(2017 05)到(2018 04)之后提取数据。 我安装了7-zip,但无法在其上安装python。

1 个答案:

答案 0 :(得分:0)

除非用户至少尝试编写自己的代码,否则我们通常不会发出代码。你知道整体,给一个人一条鱼或者教一个人养鱼哲学。

@echo off
setlocal EnableDelayedExpansion
REM Find all zipped dumpdata files
FOR /R Z:\abc %%G IN (dumpdata*_*_as_tap.zip) DO (
    REM extract date from folder name date is surrounded by parentheses.
    FOR /F "TOKENS=2 delims=()" %%H IN ("%~pG") DO (
        SET "fdate=%%~H"
        REM remove space from date
        set "fdate=!fdate: =!
        REM check if date is between two dates
        IF !fdate! GTR 201705 IF !fdate! LEQ 201804 (
            REM 7zip command here.  %%G is your zip file name
        )
    )
)