2015-11-19 6 views
1

Я получил хорошее предложение в другом потоке, чтобы поддержать удаление/замену определенных символов из имен файлов в структуре каталогов. Работает как ожидалось для обычных символов ascii (например, &).Заменить отдельные кавычки (') в именах файлов

PowerShell (отлично работает, чтобы удалить & символ из имени файла):

powershell.exe -c "Get-ChildItem 'c:\Media\Downloads' -Filter '*&*' -Recurse | Rename-Item -NewName {$_.name -replace '&','' }" 

мне также нужно удалить отдельные цитаты из некоторых файлов: Пример: mark's_file.txt.

Я пробовал несколько вариантов без успеха. Я думаю, что сталкиваюсь с проблемой пунктуации, которую я не могу разобраться. Я также попытался использовать переменную = char (39) и добавить к строке. Не повезло.

Любые идеи для достижения?

Примечание: хотел бы использовать автономный командный файл, против вызова внешнего .ps1-файла.

+0

Просто повторите его как '' ''однако не забывайте, что ваш' -фильтр' только ловит файлы с '&' – wOxxOm

+0

Успех! Это вариант, который я не пробовал :) - спасибо –

+2

Возможный дубликат [Могу ли я использовать одну цитату в строке Powershell??] (Http://stackoverflow.com/questions/11231410/can-i-use-a -Один кавычка-в-Powershell строки) – wOxxOm

ответ

3

Пакетный файл прекрасно работает для удаления обоих & и ' символы из имен файлов:

@echo off 
setlocal EnableDelayedExpansion 

rem Remove "&" characters: 
for /R "c:\Media\Downloads" %%a in ("*&*") do (
    set "fileName=%%~NXa" 
    ren "%%a" "!filename:&=!" 
) 

rem Remove "'" characters: 
for /R "c:\Media\Downloads" %%a in ("*'*") do (
    set "fileName=%%~NXa" 
    ren "%%a" "!filename:'=!" 
) 

... но пакетный файл запуска запустить гораздо быстрее чем один PS!

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