2016-07-13 3 views
0

у меня нет большого опыта работы с пакетными сценариями, но это кажется подходящей задачей для него:Пакетного скрипта для возврата файлов не дублируется с другим расширением

У меня есть очень большой каталог с записями определенного внутреннего абонента , скажем '.wav'. В той же папке у меня должна быть для каждой из этих записей xml-файл с именем точно такое же, как имя файла записи, кроме как с расширением .xml, а не с .wav.

Теперь я замечаю, что общее количество файлов «.xml» немного меньше, чем «.wav»; то есть некоторые из xml-файлов отсутствуют.

Как извлечь список всех записей с отсутствующими файлами xml?

+0

Что вы пробовали самостоятельно? Пожалуйста, поделитесь своими усилиями! Узнайте [как спросить] (http://stackoverflow.com/help/how-to-ask)! Хорошей отправной точкой является цикл 'for' (открыть новое окно командной строки, введите' for /? 'И внимательно прочитайте справку) ... – aschipfl

ответ

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

Вам не нужно пакетный файл. Вы можете ввести следующее непосредственно в командной строке:

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

На самом деле, вам не нужны ~dp модификаторы, как я написал код. Но если вы включаете информацию о пути, такую ​​как in (somepath\*.wav), тогда они становятся важными.

+0

Я получаю сообщение об ошибке:« @if был неожиданным в это время »? – Maps

+0

@Maps - Извините, у меня была глупая ошибка. Я забыл слово DO, которое требуется во всех операциях FOR. Все исправлено. – dbenham

+0

Я получаю ту же ошибку с @do? Я что-то упускаю? – Maps

0

Это немного Approch может сделал трюк

Вы просто должны изменить 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% 
Смежные вопросы