2015-01-05 4 views
1

У меня есть много .csv файлов в папке по именам, как TOP_QUERIES-filename.com.csv, TOP_QUERIES-www.filename.com.csv Можно ли сравнить все имена файлов, кроме TOP_QUERIES-www. найти, если TOP_QUERIES-www.filename.com.csv существует, то удалить его иначе держать их.Сравнить имя файла, если существует, то удалить, используя пакетный файл

Я знаю, что его можно в PHP, но я хочу сделать это с помощью пакетного файла

Thankyou

+0

вы хотите удалить все файлы, кроме тех, которые имеют '' '' 'или вы хотите удалить все файлы? – npocmaka

+0

нет! У меня есть несколько файлов с двойными именами, например, «TOP_QUERIES-filename.com.csv» и «TOP_QUERIES-www.filename.com.csv». так что эти двойные файлы я хочу избавиться от того, где у меня есть те, у которых 'www' в нем – Penny

ответ

2
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    pushd "c:\target\folder" && (
     for /f "tokens=1,* delims=." %%a in (' 
      dir /a-d /b "TOP_QUERIES-www.*.csv" 
     ') do echo del /q "TOP_QUERIES-%%b" 2>nul 
     popd 
    ) 

Это изменяет текущий активный каталог на содержащий файлы и для каждого www приставкой один , пытается удалить соответствующий парный файл. Если он не существует, ошибка будет отброшена. В конце текущий активный каталог будет восстановлен.

Чтобы определить имя файла для удаления, for /f используется для тонирования имени файла с использованием точек в качестве разделителей. Мы запрашиваем два токена (tokens=1,*), первый токен предшествует первому разделителю и сохраняется в параметре replaceabe %%a, а второй запрошенный токен - это остальная часть имени файла и сохраняется в заменяемом параметре %%b (следующий в алфавитном порядке).

Операции удаления выполняются только на консоли. Если выход правильный, удалите команду echo до del

+0

Большое спасибо за вашу программу. Он отлично работает – Penny

Смежные вопросы