仅使用文件路径复制文件和文件夹(批处理)

时间:2013-12-04 17:09:28

标签: batch-file

我不知道如何将我拥有的路径名(C:\ Folder1 \ FolderNew3 \ 3.200.25.sql)转换为我要复制的源目录(C:\ Folder1 \ FolderNew3)

我很快就写完了。我从来没有实际批量使用FOR或多IF语句,所以如果这些是错误的,请告诉我原因!

SET BUILD = 3.200.25

FOR /F %%G IN (list.txt) DO CALL :SUBROUTINE %%G
GOTO :eof

:SUBROUTINE
IF %1 == *%BUILD%.sql ( 
SET BuildLocation=%1
GOTO :CopyFiles
) ELSE GOTO :EOF

:CopyFiles
REM take %BuildLocation% and copy all files in same directory.
REM %BuildLocation% should equal "C:\Folder1\FolderNew3\3.200.25.sql" I want to copy C:\Folder1\FolderNew3\ 
XCOPY /S /Y [source] C:\MyNewLocation\


REM    Example contents of list.txt
REM    C:\Builds\Folder2\2.200.25.sql
REM    C:\Builds\Folder1\1.200.25.sql
REM    C:\Builds\Folder3\SubFolder\3.200.25.sql

我正在将目录列表转储到list.txt,并且正在寻找一组文件和文件夹以及唯一可识别的文件(在本例中为%build%.sql)

构建是唯一标识符,因此它只匹配一次。

我需要复制存储在父目录中的sql脚本旁边的所有文件夹。

父目录位置可能是可变长度的,所以我不能使用delim = \来解析我所知道的路径名。

1 个答案:

答案 0 :(得分:1)

要将BuildLocation设置为父目录,请尝试更改此行:

SET BuildLocation=%1

要:

SET BuildLocation=%~p1

从此site

%~pI - expands %I to a path only