Массовое переименование pdf-файлов с использованием командной строки [закрыто]

Вопрос или проблема

У меня есть клиент, который использует свою собственную CRM и структуру имен файлов, и мне нужно изменить имена файлов, чтобы они соответствовали данным в их системе.

Все pdf-файлы будут находиться в одной папке.
Я хотел бы получить информацию из csv-файла с разделителями-запятыми и, если “столбец A” равен “filename.pdf”, переименовать “filename.pdf” в значение “столбца B”.

ren.csv:

file,new
1.txt,2.txt

powershell как командная строка:

powershell ipcsv ren.csv^|%{ren $_.file $_.new}

cmd:

for /F "tokens=1,2 delims=," %a in (ren.csv) do ren %a %b

python (кроссплатформенный):

python rencsv.py

Установите модуль unicodecsv:

pip install http://pypi.python.org/packages/source/u/unicodecsv/unicodecsv-0.9.4.tar.gz

rencsv.py:

import os, unicodecsv as csv

with open('ren.csv','rt') as csvList:
    renList = csv.reader(csvList, delimiter=",")
    for row in renList:
        if os.path.exists(row[0]):
           os.renames(row[0],row[1])

php (кроссплатформенный):

php rencsv.php

rencsv.php:

<?php
$csv=array_map('str_getcsv',file('ren.csv'));
for ($i = 0; $i <= count($csv) - 1; $i++) {
if (file_exists($csv[$i][0])) {rename($csv[$i][0], $csv[$i][1]);}}
?>

Ответ или решение

Конечно, я понимаю, что вы находитесь в поисках решения для массового переименования PDF файлов в соответствии с данными из файла CSV, используя командную строку. Представленная задача имеет ряд решений, которые подходят для разных уровней навыков и предпочтений в инструментах. Обсудим различные подходы.

Проблема

Ваш клиент использует собственную CRM систему, и вам нужно синхронизировать имена файлов в соответствии с этой системой. Все PDF файлы расположены в одной папке. Желательно использовать данные из CSV файла, чтобы переименовать файлы в соответствии с определёнными правилами – если "столбец А" равен "filename.pdf", то переименовать "filename.pdf" в название из "столбца B".

Решения

1. Использование Windows CMD

Наиболее простое и доступное решение для пользователей Windows:

for /F "tokens=1,2 delims=," %a in (ren.csv) do ren %a %b

Этот код будет читать ваш CSV файл и использовать первый столбец как текущее имя файла, а второй столбец – как новое имя для переименования.

2. Использование PowerShell

PowerShell предоставляет более мощный и гибкий способ для таких операций:

powershell ipcsv ren.csv | % { ren $_.file $_.new }

Этот командлет считывает данные из CSV и использует их для переименования файлов. Он может обрабатывать более сложные сценарии и поддерживает больше форматов.

3. Интерпретаторы Скриптов

Python

Если требуется межплатформенное решение, язык программирования Python отлично подойдёт:

import os
import unicodecsv as csv

with open('ren.csv', 'rt') as csvList:
    renList = csv.reader(csvList, delimiter=",")
    for row in renList:
        if os.path.exists(row[0]):
            os.renames(row[0], row[1])

Этот скрипт использует модуль unicodecsv для обработки CSV файлов и переименования файлов в файловой системе.

PHP

Для разработчиков, знакомых с PHP, можно использовать следующий скрипт:

<?php
$csv = array_map('str_getcsv', file('ren.csv'));
for ($i = 0; $i <= count($csv) - 1; $i++) {
    if (file_exists($csv[$i][0])) { rename($csv[$i][0], $csv[$i][1]); }
}
?>

Этот скрипт так же обрабатывает CSV и выполняет переименование, проверяя существование каждого файла перед обработкой.

Заключение

Выбор конкретного решения зависит от уровня вашего комфорта с указанными инструментами и требованиями платформы. CMD и PowerShell будут наиболее удобными для пользователей Windows, в то время как Python и PHP предоставляют универсальные решения для межплатформенной совместимости.

Эти методы помогут вам эффективно переименовать файлы и соответствовать требованиям вашего клиента по соответствию с CRM. Убедитесь, что у вас есть резервные копии файлов перед выполнением переименования, чтобы избежать потери данных.

Оцените материал
Добавить комментарий

Капча загружается...