我正在尝试从多个文件夹移动多个文件。存在文件时,应首先将其重命名,然后再移动。如果没有,则什么也不会发生(因此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
)
谢谢!
答案 0 :(得分:0)
您的脚本有两个问题,导致现在可以运行,而一个问题似乎是一种非常手动的方法。
问题1:
左括号应与if
语句在同一行,即:
if exist C:\DATA\FTP\311\*.xlsx (
问题2:
您正在搜索根C:\DATA\FTP
内的文件,但是当应该从C:\DATA\FTP\To_Process
根重命名文件时,尝试在FTP
中重命名文件
无论如何,这是一个经过稍微修改的版本,稍微有点自动化了。
@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