批处理 - 根据名称将文件夹和内容移动到不同的驱动器
Batch - Moving folders and contents based on name to a different drive
首先 post,我搜索并尝试过这个,但似乎找不到类似的东西。
好的,所以我在这上面花了一些时间,但碰壁了。如果我在单个驱动器上移动(移动),我理解并可以编写代码,但是一旦我尝试实现 xcopy 以便它可以跨驱动器工作,我就开始挣扎。
这是我目前所拥有的。这将在左括号的目录名称中查找,如果有,它将尝试将该目录移动到另一个文件夹。这工作正常。
@echo off
SETLOCAL EnableDelayedExpansion
for /d %%f in ("%C:\Testing\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" move "%%f" C:\Testing\Folder2
)
示例目录名称如下
假期 (2004) - 搬家
佛罗里达假期 - 不要移动
纽约 (2014) - 移动
示例文件夹 - 不要移动
现在,当我发现移动不适用于不同的驱动器(D:(源)和 E:(目标))时,我发现我需要使用 Xcopy。当我尝试使用 xcopy 而不是移动时,它永远不会移动任何文件或文件夹。
我想我可能必须先在新位置 mkdir 文件夹,然后移动所有内容并删除旧文件夹,但随后我需要从完整路径中提取目录名称的子字符串。我可能可以做到,但在我再花半天时间谷歌搜索如何做到这一点之前,我想和你们确认一下。在过去的几天里,我已经把头撞到墙上了,我认为一些专家可以提供帮助。
尝试使用 xcopy
@echo off
SETLOCAL EnableDelayedExpansion
for /d %%f in ("%D:\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" xcopy "%%f" E:\Folder2
)
感谢您提供的所有帮助。
周杰伦
我用的是下面的,也许对你有用:
@echo off
setlocal enabledelayedexpansion
for /d %%i in (C:\TEST\*(*) do (
xcopy "%%i" "D:\%%~pni" /s /i
)
pause
替换相关目录的路径。祝你好运!
首先 post,我搜索并尝试过这个,但似乎找不到类似的东西。
好的,所以我在这上面花了一些时间,但碰壁了。如果我在单个驱动器上移动(移动),我理解并可以编写代码,但是一旦我尝试实现 xcopy 以便它可以跨驱动器工作,我就开始挣扎。
这是我目前所拥有的。这将在左括号的目录名称中查找,如果有,它将尝试将该目录移动到另一个文件夹。这工作正常。
@echo off
SETLOCAL EnableDelayedExpansion
for /d %%f in ("%C:\Testing\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" move "%%f" C:\Testing\Folder2
)
示例目录名称如下
假期 (2004) - 搬家
佛罗里达假期 - 不要移动
纽约 (2014) - 移动
示例文件夹 - 不要移动
现在,当我发现移动不适用于不同的驱动器(D:(源)和 E:(目标))时,我发现我需要使用 Xcopy。当我尝试使用 xcopy 而不是移动时,它永远不会移动任何文件或文件夹。
我想我可能必须先在新位置 mkdir 文件夹,然后移动所有内容并删除旧文件夹,但随后我需要从完整路径中提取目录名称的子字符串。我可能可以做到,但在我再花半天时间谷歌搜索如何做到这一点之前,我想和你们确认一下。在过去的几天里,我已经把头撞到墙上了,我认为一些专家可以提供帮助。
尝试使用 xcopy
@echo off
SETLOCAL EnableDelayedExpansion
for /d %%f in ("%D:\Folder1%\*") do (
SET "folder=%%f"
if /I NOT "!folder:(=!"=="!folder!" xcopy "%%f" E:\Folder2
)
感谢您提供的所有帮助。
周杰伦
我用的是下面的,也许对你有用:
@echo off
setlocal enabledelayedexpansion
for /d %%i in (C:\TEST\*(*) do (
xcopy "%%i" "D:\%%~pni" /s /i
)
pause
替换相关目录的路径。祝你好运!