Windows 需要批处理文件才能移动文件

Windows 需要批处理文件才能移动文件,windows,batch-file,Windows,Batch File,我正在寻找一个小的,免费的程序,我可以用来移动文件从一个文件夹到另一个。我做了一些研究,认为批处理文件可能是我最好的选择。不幸的是,我以前从未使用过批处理文件,并且拥有绝对的基本编程技能(在大学里参加了一门关于Java的计算机科学课程) 这就是我想要的: 我在一个特定文件夹中有多个文件夹(..…\Phase\u 2\u Document\u Prep),其中包含大量PDF文件,超过25000个 我还有一个主Excel电子表格,其中包含每个PDF文档的文件名以及它们应该位于的文件夹。到目前为止,当

我正在寻找一个小的,免费的程序,我可以用来移动文件从一个文件夹到另一个。我做了一些研究,认为批处理文件可能是我最好的选择。不幸的是,我以前从未使用过批处理文件,并且拥有绝对的基本编程技能(在大学里参加了一门关于Java的计算机科学课程)

这就是我想要的:

我在一个特定文件夹中有多个文件夹(..…\Phase\u 2\u Document\u Prep),其中包含大量PDF文件,超过25000个

我还有一个主Excel电子表格,其中包含每个PDF文档的文件名以及它们应该位于的文件夹。到目前为止,当前文件都与不同的文件夹混合在一起。我可以创建一个仅具有文件名和文件夹的管道分隔文本文件

我需要一个程序,将导入一个包含文件名和目标文件夹的txt文件,搜索当前一个特定的文件夹和子文件夹,以找到文件名(PDF),并将每个文件移动到目标文件夹

================更新======================= 这是我正在使用的代码,但我一直得到…\FILES,此时出现意外错误,没有复制任何内容

代码:


再次感谢

错误是由for循环在:COPY_FILES下生成的

查看帮助以了解如何使用for命令-
for/?
。根据帮助,可通过以下方式使用/F开关-

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
也许您想将第二个for循环更改为-

for /f %%I in (%~1) do echo xcopy /w /v "%FILESPATH%\%%I" "%DESTPATH%\%%~pnxI"

由于您尚未包含它,我不确定路径和文件名(%FilePath%和%%I)之间是否需要反斜杠。如果您能提供
Mudd_3_List.txt

的内容示例,我可能会使这更有用。错误是由for循环在:COPY_FILES下生成的

查看帮助以了解如何使用for命令-
for/?
。根据帮助,可通过以下方式使用/F开关-

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
也许您想将第二个for循环更改为-

for /f %%I in (%~1) do echo xcopy /w /v "%FILESPATH%\%%I" "%DESTPATH%\%%~pnxI"

由于您尚未包含它,我不确定路径和文件名(%FilePath%和%%I)之间是否需要反斜杠。如果您能提供
Mudd_3_List.txt

的内容示例,我可能会使这更有用。错误是由for循环在:COPY_FILES下生成的

查看帮助以了解如何使用for命令-
for/?
。根据帮助,可通过以下方式使用/F开关-

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
也许您想将第二个for循环更改为-

for /f %%I in (%~1) do echo xcopy /w /v "%FILESPATH%\%%I" "%DESTPATH%\%%~pnxI"

由于您尚未包含它,我不确定路径和文件名(%FilePath%和%%I)之间是否需要反斜杠。如果您能提供
Mudd_3_List.txt

的内容示例,我可能会使这更有用。错误是由for循环在:COPY_FILES下生成的

查看帮助以了解如何使用for命令-
for/?
。根据帮助,可通过以下方式使用/F开关-

FOR /F ["options"] %variable IN (file-set) DO command [command-parameters]
FOR /F ["options"] %variable IN ("string") DO command [command-parameters]
FOR /F ["options"] %variable IN ('command') DO command [command-parameters]
也许您想将第二个for循环更改为-

for /f %%I in (%~1) do echo xcopy /w /v "%FILESPATH%\%%I" "%DESTPATH%\%%~pnxI"

由于您尚未包含它,我不确定路径和文件名(%FilePath%和%%I)之间是否需要反斜杠。如果您能提供
Mudd_3_List.txt

的内容示例,我可能会使这一点更有用。您的问题似乎是这一行:

for /f %FILESPATH% %%I in (%~1) do echo xcopy /w /v "%%I" "%DESTPATH%%%~pnxI"
语法应为:

for /f %%i in (%~1) do ...

for/f”“%%i in(%%~1)do。。。
有关文档,请参见
获取/?

顺便说一下:您应该使用
(“%~1”)
来处理带有空格的文件名。

您的问题似乎是这一行:

for /f %FILESPATH% %%I in (%~1) do echo xcopy /w /v "%%I" "%DESTPATH%%%~pnxI"
语法应为:

for /f %%i in (%~1) do ...

for/f”“%%i in(%%~1)do。。。
有关文档,请参见
获取/?

顺便说一下:您应该使用
(“%~1”)
来处理带有空格的文件名。

您的问题似乎是这一行:

for /f %FILESPATH% %%I in (%~1) do echo xcopy /w /v "%%I" "%DESTPATH%%%~pnxI"
语法应为:

for /f %%i in (%~1) do ...

for/f”“%%i in(%%~1)do。。。
有关文档,请参见
获取/?

顺便说一下:您应该使用
(“%~1”)
来处理带有空格的文件名。

您的问题似乎是这一行:

for /f %FILESPATH% %%I in (%~1) do echo xcopy /w /v "%%I" "%DESTPATH%%%~pnxI"
语法应为:

for /f %%i in (%~1) do ...

for/f”“%%i in(%%~1)do。。。
有关文档,请参见
获取/?

顺便说一下:您应该使用
(“%~1”)
来处理带有空格的文件名。

是非破坏性的,只会在与文件列表相同的文件夹中创建
Mudd_3_List.txt.bat.txt
,这样您就可以在记事本中对其进行检查,然后将其重命名为.bat,以便在您满意的情况下执行

实际的文件列表
Mudd_3_List.txt
需要在每一行以逗号分隔的格式从Excel保存

folder_path,Filename
例如:确保文件夹名称中没有逗号

c:\new folder1\folder B\,Old pdf nameA.pdf
c:\new folder2\folder five\,Old pdf nameB.pdf
更改以下文件夹以适合您
“c:\folder\Phase\u 2\u Document\u Prep”

以下是创建文件的脚本:

@echo off
set "FILELIST=C:\Users\mcuomo\Documents\Test\Mudd_3_List.txt"
for /f "tokens=1,* delims=," %%a in ('type "%FILELIST%" ') do (
    for /r "c:\folder\Phase_2_Document_Prep" %%f in ("%%~b") do (
       >>%FILELIST%.bat.txt" echo md "%%~a" 2^>nul & move "%%~f" "%%~a"
    )
)

是非破坏性的,只会在与文件列表相同的文件夹中创建
Mudd_3_List.txt.bat.txt
,以便您可以在记事本中检查它,然后将其重命名为.bat,以便在满意的情况下执行

实际的文件列表
Mudd_3_List.txt
需要在每一行以逗号分隔的格式从Excel保存

folder_path,Filename
例如:确保文件夹名称中没有逗号

c:\new folder1\folder B\,Old pdf nameA.pdf
c:\new folder2\folder five\,Old pdf nameB.pdf
更改以下文件夹以适合您
“c:\folder\Phase\u 2\u Document\u Prep”

以下是创建文件的脚本:

@echo off
set "FILELIST=C:\Users\mcuomo\Documents\Test\Mudd_3_List.txt"
for /f "tokens=1,* delims=," %%a in ('type "%FILELIST%" ') do (
    for /r "c:\folder\Phase_2_Document_Prep" %%f in ("%%~b") do (
       >>%FILELIST%.bat.txt" echo md "%%~a" 2^>nul & move "%%~f" "%%~a"
    )
)

是非破坏性的,只会在与文件列表相同的文件夹中创建
Mudd_3_List.txt.bat.txt
,以便您可以在记事本中检查它,然后将其重命名为.bat,以便在满意的情况下执行

实际的文件列表
Mudd_3_List.txt
需要在每一行以逗号分隔的格式从Excel保存

folder_path,Filename
例如:确保文件夹名称中没有逗号。