Batch file 仅使用批处理复制web.config文件

Batch file 仅使用批处理复制web.config文件,batch-file,web-config,copy,Batch File,Web Config,Copy,这是我用来搜索要复制的文件的代码 @echo off setlocal disableDelayedExpansion set "src=C:\" set "dst=C:\test2" set "search=Web.config" for /r "%src%" %%F in (*%search%*) do ( set "full=%%~fF" set "name=%%~nxF" setlocal enableDelayedExpansion copy "!full!" "%dst%\!na

这是我用来搜索要复制的文件的代码

@echo off
setlocal disableDelayedExpansion

set "src=C:\"
set "dst=C:\test2"
set "search=Web.config"

for /r "%src%" %%F in (*%search%*) do (
set "full=%%~fF"
set "name=%%~nxF"
setlocal enableDelayedExpansion
copy "!full!" "%dst%\!name:%search%=Web.config - Datum - %date:~0,2%-%date:~3,2%-     %date:~6,4%-Tijd-%time:~0,2%-%time:~3,2%-%time:~6,2%!"
endlocal
)
但通过这种方式,它会复制其中包含web.config的所有文件(如默认文件和注释文件)。 我只想要“XML配置”文件

有人知道如何解决这个问题吗?

您可以尝试以下方法:

@ECHO OFF &SETLOCAL disableDelayedExpansion

set "src=C:\"
set "dst=C:\test2"
set "search=Web.config"
SET "XMLLine1=<?xml version="1.0" ?>"

FOR /f "delims=" %%a IN ('DIR /s /b /a-d "%search%"') DO CALL:SearchAndCopy "%%~a"
GOTO:EOF

:SearchAndCopy
SETLOCAL
FOR /f "usebackqdelims=" %%b IN ("%~1") DO SET "Line1=%%~b"&GOTO:next
:next
IF /i NOT "%Line1%"=="%XMLLine1%" EXIT /b
COPY "%~1" "%dst%\Web.config - Datum - %date:~0,2%-%date:~3,2%-     %date:~6,4%-Tijd-%time:~0,2%-%time:~3,2%-%time:~6,2%"
EXIT /b
@ECHO OFF&SETLOCAL disableDelayedExpansion
设置“src=C:\”
设置“dst=C:\test2”
设置“search=Web.config”
设置“XMLLine1=”
对于/f“delims=“%%a IN('DIR/s/b/a-d”%search%%'),请调用:SearchAndCopy“%%~a”
后藤:EOF
:搜索并复制
SETLOCAL
对于/f“usebackqdelims=““%1”中的%%b”,请设置“Line1=%%~b”&转到:下一步
:下一个
如果/i不是“%Line1%”==%XMLLine1%”退出/b
复制“%1”“%dst%\Web.config-Datum-%date:~0,2%-%date:~3,2%-%date:~6,4%%Tijd-%time:~0,2%-%time:~3,2%-%time:~6,2%”
退出/b
根据您的需要更改
XMLLine1


请注意,这不适用于UTF-8/16/…文件。

为什么不在(*%search%*.xml)中为/r“%src%”%%F使用
?愚蠢的问题,但是,区分要包含的文件的标准是什么?