2015-01-03 2 views
1

У меня есть несколько файлов, которые я пытаюсь сортировать для своего исследования PhD. Я не знаком с использованием пакетных файлов, но у меня есть некоторый опыт кодирования.Пакетное перемещение файлов на основе части имени файла - Windows 8

Я пытаюсь переместить файлы на основе части имени файла в папки автоматически для них в каталоге они в настоящее время.

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

Некоторые примеры структуры файла:

  • 01-64.1007-1-LID.pdz
  • 01-64.1007-2-BASE.pdz
  • 02-67.1765-1.pdz
  • 02-67.1765-2.pdz
  • 02-67.1765-3.pdz

т.д.

В основном структура файла работает следующим образом:

Первый номер мой уникальный идентификатор для объекта, то дефис, то музеи уникальный идентификатор, затем дефис, то число, чтобы показать, какой анализ объекта , Наконец, может быть или не быть небольшой дескриптор (т. Е. BASE или LID), который помогает мне определить, где я выполнил сканирование.

Итак, чтобы разбить его 01-64.1007-1-LID означает Объект 1 - Номер доступа к музею 64.1007 - Первый анализ - Выполняется на крышке объекта - .pdz - это расширение файла.

02-67.1765-2 означает Object 2 - Музей инвентарный номер 67,1765 - Второй анализ и т.д.

То, что я хочу сделать, это движение:

  • 01-64.1007-1-LID.pdz
  • 01-64.1007-2-BASE.pdz

в папку под названием:

  • 01-64.1007

и

  • 02-67.1765-1.pdz
  • 02-67.1765-2.pdz
  • 02-67.1765-3.pdz

в папку под названием:

  • 02-67.1765

и т.д.

Я видел несколько сценариев, которые могут помочь в этом, но я не уверен, как их настроить для моих целей. Если кто-то может помочь, я бы очень признателен!

Спасибо,

Майк

+0

http://ss64.com/nt/for_f.html http://ss64.com/nt/md.html http://ss64.com/nt/move.html – SomethingDark

+0

Вы хотите использовать сценарий типа .bat или похожий на linux скрипт .sh? Почему бы вам не использовать язык, на котором у вас уже есть опыт? – michas

+0

Я хотел бы использовать файл .bat для Windows. Мое кодирование ограничено очень конкретными приложениями для моего PhD и в целом связано с подключением плагинов для приложения, редактирования или модификации кода, предоставленного другими (довольно немного LUA, немного материала в Qt Creator для просмотра базы данных). Я только начал изучать Ruby on Rails для создания веб-приложения, которое я создаю, но это в самые ранние дни. К сожалению, я археолог, которого мы обычно луддиты: p –

ответ

1

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

@echo off 
for %%a in (*.pdz) do (
    echo processing "%%a" 
     for /f "tokens=1,2 delims=-" %%b in ("%%~nxa") do (
     md "%%b-%%c" 2>nul 
     move "%%a" "%%b-%%c" >nul 
    ) 
) 
pause 
+0

Не могли бы вы добавить короткое объяснение вашего ответа. (Обычно я не парень из окон, особенно когда дело доходит до таких вещей, как '(%% ~ nxa).) – michas

+0

Хорошо, у этого наверняка есть ноги! Он правильно переместил файлы, но, к сожалению, он неправильно назвал имена папок. Он остановился на первом уровне, а не на втором. Поэтому структура папок идет 01, 02, 03 и т. Д. Спасибо! –

+0

Я не заметил первый дефис - попробуйте отредактированный код выше. – foxidrive

0

Если вы на самом деле означает Баш скрипт, вы можете использовать что-то вроде этого:

for file in *.pdz; do 
    dir=${echo "$file"|cut -d- -f -2} 
    mkdir -p "$dir" 
    mv "$file" "$dir" 
done 

Команда cut вырежут часть перед вторым дефисом, определить имя каталога. Затем мы создаем каталог, если он еще не присутствует. Наконец, просто переместите файл в этот каталог.

Обновление: Спасибо, что пояснили вашу окружающую среду. (Я был уверен, что вопрос, упомянутый bash раньше ...). Если вы хотите использовать это решение, вы можете установить git, который поставляется с хорошим git-bash.

+0

Я здесь невероятно плотный - извиняюсь (длинная ночь - я был до 3 утра, и я работал с 8 утра этим утром). Я скопировал это в блокнот, сохранил его как .bat-файл и запустил .bat? Если это правильно, это, похоже, не делает ничего к сожалению. –

+0

это bash - отличная от партии. Хотя некоторые команды выглядят одинаково, синтаксис не то же самое. в общем: Windows = пакет, Unix = bash – Stephan

+0

@Stephan, да, вопрос, который упоминается в bash, поэтому мой первоначальный комментарий к вопросу и обновление этого ответа. – michas