管道字符串与变量中的文件夹到 findstr - 复制和重命名文件
Piping string with folders in variable to findstr - copy and rename files
我正在尝试将包含文件夹路径的字符串传输到 findstr
以搜索给定文件夹名称中的特定部分 - 或者至少,这是我打算做的.
我有一个源文件夹,其中的文件必须复制到多个子文件夹中,之后,其中一个复制的文件必须重命名为与目标文件夹相对应。如果已经有同名文件,则必须覆盖它们。我正在尝试通过 .bat
-file 在我的代码中使用以下命令来实现此目的:
pushd ..\..\destination_folder\
FOR /F "delims=" %%i in ('dir /AD /S /B^| findstr /I "._Modul_X$"') do copy ..\xxx\yyy\ressources\*.* %%i
& ren %%i\xxxx_Modul_X.BAT_TEMPLATE" "%%i_Modul_X.BAT_TEMPLATE
copy
-部分似乎有效,rename
-部分无效,并且在覆盖复制后必须重命名的文件时(名称冲突!),我完全不知道该怎么做(IF EXIST
& DEL
?)。
如果我理解你正在尝试的过程,那么下面应该按照你的要求进行,根据我的假设 xxxx
是一个恰好四位数字的序列(目录名称), 和字符(文件名):
@Echo Off
SetLocal EnableExtensions
PushD "..\..\destination_folder" 2>NUL || GoTo :EOF
If Not Exist "..\xxx\yyy\resources\*.*" GoTo :EOF
For /F "Delims=" %%G In (
'Dir /B /S /A:D "????_Modul_X" 2^>NUL ^|%__AppDir__%findstr.exe^
/I /R "\[0123456789][0123456789][0123456789][0123456789]_Modul_X"'
) Do (
For /F "Delims=" %%H In (
'%__AppDir__%where.exe /F "%%G":"????_Modul_X.BAT_TEMPLATE" 2^>NUL'
) Do Del /A /F %%H
Copy /Y "..\xxx\yyy\resources\*.*" "%%G" 1>NUL
For /F "Delims=" %%I In (
'%__AppDir__%where.exe /F "%%G":"????_Modul_X.BAT_TEMPLATE" 2^>NUL'
) Do If /I Not "%%~nxI" == "%%~nxG%%~xI" Ren %%I "%%~nxG%%~xI"
)
请注意,您可能需要修改 xxx\yyy\resources
、(行 5
和 14
) 的两个实例,因为没有人真的用那样的名字,特别注意拼写,我上面用的是resources
,不是ressources
.
我正在尝试将包含文件夹路径的字符串传输到 findstr
以搜索给定文件夹名称中的特定部分 - 或者至少,这是我打算做的.
我有一个源文件夹,其中的文件必须复制到多个子文件夹中,之后,其中一个复制的文件必须重命名为与目标文件夹相对应。如果已经有同名文件,则必须覆盖它们。我正在尝试通过 .bat
-file 在我的代码中使用以下命令来实现此目的:
pushd ..\..\destination_folder\
FOR /F "delims=" %%i in ('dir /AD /S /B^| findstr /I "._Modul_X$"') do copy ..\xxx\yyy\ressources\*.* %%i
& ren %%i\xxxx_Modul_X.BAT_TEMPLATE" "%%i_Modul_X.BAT_TEMPLATE
copy
-部分似乎有效,rename
-部分无效,并且在覆盖复制后必须重命名的文件时(名称冲突!),我完全不知道该怎么做(IF EXIST
& DEL
?)。
如果我理解你正在尝试的过程,那么下面应该按照你的要求进行,根据我的假设 xxxx
是一个恰好四位数字的序列(目录名称), 和字符(文件名):
@Echo Off
SetLocal EnableExtensions
PushD "..\..\destination_folder" 2>NUL || GoTo :EOF
If Not Exist "..\xxx\yyy\resources\*.*" GoTo :EOF
For /F "Delims=" %%G In (
'Dir /B /S /A:D "????_Modul_X" 2^>NUL ^|%__AppDir__%findstr.exe^
/I /R "\[0123456789][0123456789][0123456789][0123456789]_Modul_X"'
) Do (
For /F "Delims=" %%H In (
'%__AppDir__%where.exe /F "%%G":"????_Modul_X.BAT_TEMPLATE" 2^>NUL'
) Do Del /A /F %%H
Copy /Y "..\xxx\yyy\resources\*.*" "%%G" 1>NUL
For /F "Delims=" %%I In (
'%__AppDir__%where.exe /F "%%G":"????_Modul_X.BAT_TEMPLATE" 2^>NUL'
) Do If /I Not "%%~nxI" == "%%~nxG%%~xI" Ren %%I "%%~nxG%%~xI"
)
请注意,您可能需要修改 xxx\yyy\resources
、(行 5
和 14
) 的两个实例,因为没有人真的用那样的名字,特别注意拼写,我上面用的是resources
,不是ressources
.