2017-01-09 11 views
1

У меня есть папка в операционной системе «Windows 10» с файлами, названными как;Переименование всех файлов в папке (замена слов/чисел, разделенных символом «_»)

afilename_1 
bfilename_3 
cfilename_2 

Так оно и должно быть. Но мне нужно, чтобы оно сортировалось в соответствии с числами, добавленными после подчеркивания. Я хочу, чтобы слова перед подчеркиванием, а также они отображали описание файла.

Подсказка: Перестановка слов/чисел, разделенных символом «_».

Ожидаемый результат:

1_afilename 
2_cfilename 
3_bfilename 

Любая идея, помимо ручного переименования?

P.S. Папка состоит из 100 файлов.
Решение на языке программирования Java является заметным, но не обязательным.

Обновление (10.01.2017): Ниже приведен пример кода Java, чтобы получить все имена файлов в качестве вывода.

File folder = new File("/xxx/ss/folder/"); 
File[] listOfFiles = folder.listFiles(); 
for (File file : listOfFiles) 
{ if (file.isFile()) 
{ System.out.println(file.getName()); 
} } 

Теперь, думая, как получить каждое имя файла сразу и выполнить обмен в цикле.
Любые мысли?

Решение: Windows Powershell code работал.

Если вход: имена файлов следующего образом

xxx_afilename_1 
xxx_bfilename_3 
xxx_cfilename_2 

затем следующий код помогает в получении аналогичного вывода, как указано выше.

ls | %{ ren $_ ($_.name -replace '.*?-(.*?)-(.*?)(\..*)','$2_$1$3') } 
+1

Ну вы можете использовать регулярное выражение отделить имена файлов и отформатировать их в соответствии с вашими потребностями. –

+0

Покажите нам, что вы пробовали, возможно, в java, поскольку вы добавили этот тег. –

+0

@ Snađошƒаӽ вот пример кода Java, который был создан для получения всех имен файлов в качестве вывода. 'File folder = new File ("/Users/you/folder/"); Файл [] listOfFiles = folder.listFiles(); for (Файл файла: listOfFiles) { if (file.isFile()) { System.out.println (file.getName()); } } ' Теперь подумайте, как получить каждое имя файла сразу и выполнить обмен в цикле. Есть предположения? – Varma

ответ

1

В Windows Powershell

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)','$2_$1') }

Обновление для поддержания расширения

ls | %{ ren $_ ($_.name -replace '(.+)_(.+)(\..+)','$2_$1$3') }

+0

Это просто и почти работало на мой вопрос Скажем, это текстовые файлы Вывод был следующим '1.txt_afilename 2.txt_cfilename 3.txt_bfilename' Ни что не мой желаемый результат, ни файлы.. читаемый из-за конфликта с расширением. Пожалуйста, смотрите. Спасибо. – Varma

+0

Обновлен ответ на продолжение расширения файла. –

1

Есть два способа, о которых я могу думать.

Это довольно простая программа для записи на C/C++/C# или Python или что-то-вы. В зависимости от вашего опыта может потребоваться столько времени, чтобы писать и отлаживать программу, чтобы выполнять работу вручную, но гораздо веселее.

Хороший текстовый редактор для программистов может взять список файлов, например, из списка каталогов и сгенерировать файл .bat с командами переименования. Такие вещи, как макросы и поиск и замена регулярного выражения, делают работу честно безболезненный. (Я всегда рекомендую jEdit. - бесплатно, мультиплатформенный и мощные)

+0

Интересно! не могли бы вы, пожалуйста, сослаться на любой учебный материал, чтобы он помог мне попробовать. Спасибо за ответ. (: – Varma

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

  • Нет связанных вопросов^_^