Batch file 批处理脚本,用于返回未使用其他扩展名复制的文件

Batch file 批处理脚本,用于返回未使用其他扩展名复制的文件,batch-file,Batch File,我对批处理脚本编写没有太多经验,但这似乎是一项适合的任务: 我有一个非常大的目录,里面有特定扩展名的录制,比如“.wav”。在同一个文件夹中,我应该有一个xml文件,它的名称与录制文件名完全相同,只是扩展名是.xml而不是.wav 现在,我注意到“.xml”文件总数略小于“.wav”总数;i、 e缺少一些xml文件 如何提取包含丢失xml文件的所有录制的列表?这是一个小方法 您只需将Set folder=c:\temp更改为包含您的文件的文件夹: @echo off set folder=c:\

我对批处理脚本编写没有太多经验,但这似乎是一项适合的任务:

我有一个非常大的目录,里面有特定扩展名的录制,比如“.wav”。在同一个文件夹中,我应该有一个xml文件,它的名称与录制文件名完全相同,只是扩展名是.xml而不是.wav

现在,我注意到“.xml”文件总数略小于“.wav”总数;i、 e缺少一些xml文件


如何提取包含丢失xml文件的所有录制的列表?

这是一个小方法

您只需将
Set folder=c:\temp
更改为包含您的文件的文件夹:

@echo off
set folder=c:\temp
set ext1=wav
set ext2=xml
Set Log=c:\MissingFiles.txt
set /a count=0
cd /d "%folder%"
setlocal enabledelayedexpansion
(
    for %%a in (*.%ext1%) do (
        for %%b in (*.%ext2%) do (
            If /I not "%%~na"=="%%~nb" ( SET /A COUNT+=1 && echo "%%~dpnxb" )
        )
    )
    echo.
    ECHO The total number of missing files is !COUNT! 
Endlocal
) > %Log%
Start "" %Log%

这个小小的方法就可以奏效

您只需将
Set folder=c:\temp
更改为包含您的文件的文件夹:

@echo off
set folder=c:\temp
set ext1=wav
set ext2=xml
Set Log=c:\MissingFiles.txt
set /a count=0
cd /d "%folder%"
setlocal enabledelayedexpansion
(
    for %%a in (*.%ext1%) do (
        for %%b in (*.%ext2%) do (
            If /I not "%%~na"=="%%~nb" ( SET /A COUNT+=1 && echo "%%~dpnxb" )
        )
    )
    echo.
    ECHO The total number of missing files is !COUNT! 
Endlocal
) > %Log%
Start "" %Log%
您实际上不需要批处理文件。您可以直接在命令行中输入以下内容:

for %F in (*.wav) do @if not exist "%~dpnF.xml" echo %F
实际上,您不需要使用
~dp
修饰符,因为我已经编写了代码。但是如果您在(somepath\*.wav)中包含路径信息,如
,那么它们就变得很重要

您实际上不需要批处理文件。您可以直接在命令行中输入以下内容:

for %F in (*.wav) do @if not exist "%~dpnF.xml" echo %F

实际上,您不需要使用
~dp
修饰符,因为我已经编写了代码。但是,如果您在(somepath\*.wav)中包含路径信息,如
,那么它们就变得很重要。

到目前为止,您自己做了哪些尝试?请分享你的努力!学习!一个很好的起点是
for
循环(打开一个新的命令提示窗口,键入
for/?
并仔细阅读帮助)…到目前为止,您自己尝试了什么?请分享你的努力!学习!一个很好的起点是
for
循环(打开一个新的命令提示符窗口,键入
for/?
并仔细阅读帮助)…我得到一个错误:“@if此时是意外的”?@Maps-抱歉,我犯了一个愚蠢的错误。我忘记了所有FOR语句中都需要的DO单词。全部修复。我在@do上也遇到同样的错误?我遗漏了什么吗?@Maps-不,我只是令人尴尬的马虎。我把@放错地方了。现在真的应该修好了。(我希望)我得到了一个错误:“@if此时是意外的”?@Maps-对不起,我犯了一个愚蠢的错误。我忘记了所有FOR语句中都需要的DO单词。全部修复。我在@do上也遇到同样的错误?我遗漏了什么吗?@Maps-不,我只是令人尴尬的马虎。我把@放错地方了。现在真的应该修好了。(我希望如此)