我试图将一个包含文件夹路径的字符串管到 findstr
来搜索给定文件夹名称中的特定部分--至少,这是我计划要做的。
我有一个源文件夹,里面的文件必须被复制到多个子文件夹中,之后,复制的文件中的一个文件必须被重命名为对应于目标文件夹。如果已经有相同名字的文件,就必须将其覆盖。我试图通过以下方法来实现这个目标 .bat
-文件,在我的代码中使用以下命令。
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
&amp。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
.