1

Я ищу скрипт для удаления символа # из любых имен файлов в определенном каталоге (PDF документы).

Я смотрел на несколько подобных примеров, но все это немного сбивает с толку!

2 ответа2

2

Это 2013 год, вы должны использовать PowerShell:

Get-ChildItem | Where-Object {$_.Name -match '#'} | ForEach-Object { Rename-Item -Path $_.Name -NewName $($_.Name -Replace "#", "") -WhatIf }

Перейдите к соответствующему каталогу и выполните строку. Он находит все файлы с # и затем переименовывает каждый из них. Удалите «-Whatif» для фактического выполнения операции.

Более короткая версия, использующая псевдонимы и значения по умолчанию:

ls | ? {$_.Name -match "#"} | ForEach { rni $_.Name $($_.Name -Replace "#", "")}

Как минимум, длинная версия кажется мне более читаемой, чем пакетный синтаксис 1980-х годов. Единственная загадочная часть здесь - это $ .Имя ',' $ 'в PowerShell относится к текущему объекту в цикле. Здесь во всех случаях к текущему файлу. Поскольку нам нужно выражение для параметра -NewName, мы должны заключить его в $()

1
@echo off &setlocal
cd /d c:\users\data
for /f "delims=" %%a in ('dir /b /a-d *#*.pdf') do (
    set "fname=%%~a"
    setlocal enabledelayedexpansion
    set "nname=!fname:#=!"
    ren "!fname!" "!nname!"
    endlocal
)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .