Как заставить PowerShell искать файлы в других папках при перемещении объектов? - PullRequest
1 голос
/ 10 января 2011

Я написал этот скрипт для перемещения файлов в папку назначения. Похоже, я что-то здесь упускаю, потому что когда я запускаю скрипт, он ищет только файлы .zqx в текущем каталоге, а не все диски. Обратите внимание, что часть (dir $ paths ..) быстро возвращает список файлов .zqx.

Paths.txt имеет буквы дисков, подобные этой

C:\
D:\
E:\

$paths = get-content paths.txt
mv (dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)}) -dest e:\xqz

1 Ответ

6 голосов
/ 10 января 2011

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

$OFS="`n"
"$(dir $paths -r -fi *.zqx | ?{$_.lastwritetime -lt ($sevendaysold)})"

Параметр Path для Move-Item принимает тип [string[]], поэтому PowerShell преобразует результаты вашего выражения dir в строковый массив.К сожалению, объекты System.IO.FileInfo отображают «ToString ()» на основе имени файла, который они были созданы с помощью IIRC.

К счастью, это легко исправить.Передайте объекты FileInfo в Move-Item примерно так:

dir $paths -r *.zqx | ?{$_.lastwritetime -lt $sevenDaysOld} | mv -dest e:\xqz
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...