我试图从多个文件夹中移动多个文件。当文件存在时,应该首先重命名它,然后移动它。如果没有,那么什么也不应该发生(这样bat脚本就不会出错)。
我已经编写了一个脚本,当独立使用它们时,它可以工作,但是当我将所有东西添加到一起时,它就不能工作了。有人能引导我朝正确的方向前进吗?
@echo on
if exist C:\DATA\FTP\311\*.xlsx
(
ren C:\DATA\FTP\311\To_Process\*.xlsx ??????????????????????????????????????????????????????????_311.xlsx
MOVE /Y C:\DATA\FTP\311\To_Process\*.xlsx C:\DATA\FTP\To_Process
)
if exist C:\DATA\FTP\312\*.xlsx
(
ren C:\DATA\FTP\312\To_Process\*.xlsx ??????????????????????????????????????????????????????????_312.xlsx
MOVE /Y C:\DATA\FTP\312\To_Process\*.xlsx C:\DATA\FTP\To_Process
)
if exist C:\DATA\FTP\313\*.xlsx
(
ren C:\DATA\FTP\313\To_Process\*.xlsx ??????????????????????????????????????????????????????????_313.xlsx
MOVE /Y C:\DATA\FTP\313\To_Process\*.xlsx C:\DATA\FTP\To_Process
)
if exist C:\DATA\FTP\314\*.xlsx
(
ren C:\DATA\FTP\311\To_Process\*.xlsx ??????????????????????????????????????????????????????????_314.xlsx
MOVE /Y C:\DATA\FTP\315\To_Process\*.xlsx C:\DATA\FTP\To_Process
)
if exist C:\DATA\FTP\315\*.xlsx
(
ren C:\DATA\FTP\315\To_Process\*.xlsx ??????????????????????????????????????????????????????????_315.xlsx
MOVE /Y C:\DATA\FTP\314\To_Process\*.xlsx C:\DATA\FTP\To_Process
)
if exist C:\DATA\FTP\320\*.xlsx
(
ren C:\DATA\FTP\320\To_Process\*.xlsx ??????????????????????????????????????????????????????????_320.xlsx
MOVE /Y C:\DATA\FTP\320\To_Process\*.xlsx C:\DATA\FTP\To_Process
)谢谢!
发布于 2019-04-17 09:05:41
您的脚本有两个问题导致它现在工作,其中一个问题似乎是一个非常手动的方法。
问题1:
开头的括号应该与您的if语句位于同一行,即:
if exist C:\DATA\FTP\311\*.xlsx (问题2:
您正在搜索根C:\DATA\FTP中的文件,但当从C:\DATA\FTP\To_Process根目录重命名文件时,尝试重命名文件。
不管怎么说,这里有一个稍微修改过的版本,有点自动化。
@echo off
setlocal enabledelayedexpansion
for /F %%i in ('dir /b /s *.xlsx' ^| findstr /vi "FTP\To_process") do (
set "fol=%%~pi"
set "fol=!fol:~0,-1!"
for %%a in (!fol!) do set res=%%~na
echo ren "%%~fi" "%%~dpni_!res!%%~xi"
echo move /y "%%~ni_!res!%%~xi" "C:\DATA\FTP\To_Process"
)注意到:将这个批处理文件放在C:\DATA\FTP的根目录中
最后两行以echo开头,用于测试目的,只删除它们一次,因为代码将按照您的预期完成。
for循环中有一个findstr /vi命令,这是为了确保排除C:\DATA\FTP\To_process中已经存在的重命名文件。
最后,我有点不清楚您的文件是本地化在C:\DATA\FTP\NNN\中还是在C:\DATA\FTP\NNN\To_process中,所以澄清这一点将简化我的工作,以便给出100%完整的脚本,到目前为止,这个脚本假设文件在C:\DATA\FTP\NNN中
https://stackoverflow.com/questions/55722456
复制相似问题