繁体   English   中英

批处理脚本文件中的命令rmdir无法正常工作

[英]Command rmdir in batch script file not working properly

我需要移动,然后从磁盘删除文件所在的目录。 结构如下所示:

./Export
  /Report_1
    /12345
      /something.pdf
  /Report_2
  ...

我的代码如下所示:

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

cd Export
for /D %%I in (%~dp0Export\*) do (
    set "input=%%~nI"
    for /f "tokens=2 delims=_" %%a in ("!input!") do (
        md %~dp0new_reports\new_report_%%a  
        cd Report_%%a
        for /R %%f in (*.pdf) do (
            for %%S in (%%f) do (
                if %%~zS NEQ "0" (
                    move %%f %~dp0new_reports\new_report_%%a
                    cd ..
                    set "id=%%a"
                    echo !id!
                    rmdir /S /Q "%~dp0Export\Report_!id!\"
                )
            )
        )
    )
)
@echo Finished ....

但是rmdir仅删除ID( / 12345 )的子文件夹,但是Report_1文件夹仍然存在,但是为空。 我试过echo “%〜dp0Export \\ Report_!id!\\” ,看起来还可以。

因此,脚本结构的结尾看起来像这样:

./Export
      /Report_1
      /Report_2
      ...

并且我还需要删除文件夹Report_1等。

如果我将命令复制到控制台,则可以正常工作,但在批处理脚本中,它却无法满足我的需要。

这样的东西适合您的目的吗?

@Echo Off
SetLocal EnableDelayedExpansion
PushD "%~dp0Export" 2>Nul||Exit/B
For /D %%I in (*) Do (Set "input=%%~nxI"
    MD "new_reports\new_report_!input:*_=!"
    For /F "Delims=" %%f In ('Dir/B/S/A-D "%%~nxI\*.pdf"') Do If %%~zf Neq 0 (
        Move "%%f" "new_reports\new_report_!input:*_=!" && RD/S/Q "%%~nxI"))
Echo(Finished ....
Timeout -1

我现在已经在Export目录中创建了新目录,只是为了使所有内容保持一致。 更改"new_reports\\new_report_!input:*_=!" "%~dp0new_reports\\new_report_!input:*_=!" 在两个位置更改为您的首选结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM