2014-10-10 3 views
0

У меня есть очень длинный список имен парней для папок (каждый из них является уникальным для конкретной папки); то, что я хочу сделать, это написать пакетный файл, чтобы проходить через каждую из подпапок в каждой папке, вытащить файлы в корень этой папки и заменить файлы, если есть дублирование (есть много дублирования, re, котор нужно извлечь).Пакет пустых вложенных папок из папок в CSV-файле

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

Пакетный файл 1 (доступ к CSV, вызывая другую партию, чтобы сделать работу):

@echo off 
FOR /F "tokens=1,3 delims=," %%G IN (Pt1Test.csv) DO call Empty1.bat %%G 

Пакетный файл 2 (предполагается освободить вложенные папки, а затем двигаться вдоль к следующей папке в список):

@echo off 
set _Uname=%1 
for /f "eol=: delims=" %%F in ('dir /b^|find "%_Uname%"') do <NEXT BIT I CAN'T FIGURE OUT> 

проблема у меня получает команду тянуть в основной папке.

Я знаю, что этот код работает, когда я бросаю его прямо в DOS:

for /r %f in (*) do @move /y "%f" 

Но я не могу иметь для, сделать, потому что, делать, и я не хочу, чтобы напечатать что в для 5000 или около того папок, с которых я хотел бы удалить дублирование.

Спасибо за помощь!

Tyler

+0

'и заменить файлы, если есть перекрытие' <- что это значит? – foxidrive

+0

Отредактировано для уточнения этого. Я хотел сказать, заменить файлы, если есть дублирование (переписать),/y в команде @move делает это. – Tyler

+0

Являются ли файлы двоичными дубликатами и вы хотите удалить все, кроме одной копии? Это главная цель упражнения? Или у них одинаковое имя файла, и вы хотите сохранить только одну копию? – foxidrive

ответ

0

Есть ли причина для 1,3? Вы не используете 3 (%% H) в своих примерах.

Как насчет этого? Просто перейдите в каждый каталог и обратно, перед вашей второй командой.

@echo off 
FOR /F "tokens=1,3 delims=," %%G IN (Pt1Test.csv) DO (
    pushd *%%G* 
    for /r %%a in (*) do @move /y "%%a" 
    popd 
) 
+0

Это прекрасно работает, спасибо! Мне не нужно 1,3, только 1, забыл изменить это из более раннего скрипта. – Tyler

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