2014-02-10 3 views
5

Я копировал огромное количество файлов png и txt с помощью командлета Copy-Item, и, к сожалению, я обнаружил, что забавный программист решил использовать «CON» в качестве имени файла, чтобы обновить информацию о подключении.с использованием «CON» в качестве имени файла

Учитывая, что «против» является зарезервированным словом и Copy-Item возвращается:

Copy-Item: Невозможно обработать путь «ххх \ con.txt», потому что цель представляет собой имя зарезервированное устройства.

и учитывая, что это имя не может быть изменено, и он используется в каждой папке, мне нужно скопировать, Есть ли способ, чтобы скопировать все эти «con.cfg» и файлы «con.txt» с помощью Powershell ?

Я googled, но я нашел только совет типа «Не используйте con!». или «Не используйте Powershell для копирования этих файлов».

+0

Ха-ха, я даже не могу создать файл с именем «con.txt», чтобы реплицировать вашу проблему, но я думаю, что [этот ответ] (http://superuser.com/a/129260) на суперпользователе может помочь вам –

+0

используйте linux boot cd для копирования файлов. – Tschallacka

ответ

2

Я не смог найти решение для PowerShell, но вы должны быть в состоянии переименовать файлы через командную строку, используя примерно следующее:

ren \\.\<absolute path> <new name> 

Так, например:

ren \\.\C:\stuff\con.cfg stuff.cfg 

Вы можете вызвать из командной строки с помощью PowerShell, конечно:

cmd /c "ren \\.\C:\stuff\con.cfg stuff.cfg" 

И очевидно, что вы могли бы использовать переменные PowerShell там, если вы хотите

$dir = "C:\stuff" 
cmd /c "ren \\.\$dir\con.cfg stuff.cfg" 
+0

Я не могу заставить его работать с удаленными путями, такими как '\\ servername \ c $ \ myPath', но он работает локально ... лучше, чем ничего! – Naigel

1

Вы можете попробовать обратиться к ним с помощью шаблона: *on?

Пример:

ls | ? {$_.Name -match "*on.cfg"} | del 

Regex пример:

ls | ? {$_.Name -match "^\won\.cfg"} | del 
+0

Моя проблема заключается в создании файла с таким именем – Naigel

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