@echo off setlocal enabledelayedexpansion set "tempDir=%~dp0temp_unzip" set "zipDir=%~dp0new_zips" set "totalFiles=0" set "processedFiles=0" for /r %%a in (*.zip) do ( set /a totalFiles+=1 ) for /r %%a in (*.zip) do ( mkdir "%tempDir%" 7z x "%%a" -o"%tempDir%" > nul pushd "%tempDir%" for /r %%b in (*.csv) do ( set "var=%%~nb" set "newn=!var:GTA_=!" ren "%%b" "!newn!.txt" set /a processedFiles+=1 echo Processing file !processedFiles! of !totalFiles!... ) popd move /Y "%tempDir%\*" ".\" rmdir "%tempDir%" /Q 7z a -tzip -mx=9 -r -x"!zipDir!\%%~nxa" "!zipDir!\%%~nxa" "*.txt" > nul del "%%a" > nul ) echo End of the script.这段代码中 move /Y "%tempDir%\*" ".\" 无法执行,因为move无法移动文件夹,如何解决?
时间: 2023-12-09 08:04:04 浏览: 394
对不起,我之前提供的代码有误。确实,`move`命令无法直接移动文件夹。为了解决这个问题,我们可以使用`robocopy`命令来替代`move`命令。`robocopy`是一个强大的文件复制工具,也可以用于移动文件夹。
以下是修改后的代码:
```batch
@echo off
setlocal enabledelayedexpansion
set "tempDir=%~dp0temp_unzip"
set "zipDir=%~dp0new_zips"
set "totalFiles=0"
set "processedFiles=0"
for /r %%a in (*.zip) do (
set /a totalFiles+=1
)
for /r %%a in (*.zip) do (
mkdir "%tempDir%"
7z x "%%a" -o"%tempDir%" > nul
pushd "%tempDir%"
for /r %%b in (*.csv) do (
set "var=%%~nb"
set "newn=!var:GTA_=!"
ren "%%b" "!newn!.txt"
set /a processedFiles+=1
echo Processing file !processedFiles! of !totalFiles!...
)
popd
robocopy /move /e "%tempDir%" ".\" > nul
7z a -tzip -mx=9 -r -x"!zipDir!\%%~nxa" "!zipDir!\%%~nxa" "*.txt" > nul
del "%%a" > nul
)
echo End of the script.
```
在修改后的代码中,我使用了`robocopy /move /e`命令来代替`move`命令。`/move`选项告诉`robocopy`命令要移动文件而不是复制,`/e`选项表示包括所有子文件夹和文件。
请注意,`robocopy`命令的语法略有不同,因此我将`move`命令的参数进行了修改。现在,它应该能够正确地移动文件夹了。
希望这次的修改能解决你的问题!如果还有其他疑问,请随时提问。
阅读全文