2014-10-21 9 views
0

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

Теперь у меня есть:

Copy-Item -Path "$args[0]/" -Filter*.* 

Так он будет копировать на место я сейчас (и это нормально, я не хочу другого места), но ничего не копировать. Пожалуйста помоги.

+3

пожалуйста, добавьте больше кода, например, функцию это называется в – Paul

+2

Основываясь исключительно на коде, который вы указали, вы не можете копировать вещи, потому что для копирования объекта требуется как путь SOURCE, так и DESTINATION, который будет поставляться в той или иной форме. Вы предоставляете один из двух, и вам нужно предоставить другое. В синтаксисе, который вы используете, путь, который вы поставили, является источником. Вам нужно будет добавить аргумент -destination, чтобы указать, где файлы должны быть скопированы. – TheMadTechnician

+0

Но что, если я хочу скопировать его в местоположение, я сейчас? Я меняю установочное место, и мне все еще нужно добавить путь назначения? – Roberto

ответ

2

Довольно уверен, что проблема в том, что 0 элемент $args не расширяется в строке создания недопустимый путь. Оберните переменную в $(), чтобы она могла расширяться внутри строки с двойными кавычками. В противном случае вы попытаетесь скопировать папку C:\TEST[0]/, которая, очевидно, неверна.

Copy-Item -Path "$($args[0])/" -Filter *.* -Recurse 

Пока не уверен, почему у вас есть косая черта, поскольку Windows-путь использует обратную косую черту.

function Copy-Something(){ 
    test-Path "$($args[0])/" 
    test-path "$($args[0])" 
} 

Copy-Something C:\temp 

С помощью того, что вы предоставили, результат показывает, что может быть избыточно иметь косую черту. Также порекомендовал бы называть Test-Path аргументом в любом случае, поскольку он, возможно, поймал это для вас.

True 
True 

От Вопрос Комментарий

Вы ищете параметра -Recurse, если вы также хотите содержимое папки.

От ответа Комментарий

Если вы хотите содержимое, а не папку, которую вы должны быть в состоянии сделать что-то вроде этого:

Copy-Item -Path "$($args[0])\*" -Filter *.* -Recurse 
+0

Итак, теперь я использую: C: \ Users \ Administrator \ Desktop \ test.ps1 C: \ TEST и i code У меня есть: Copy-Item -Path "$ ($ args [0])" -Filter *. * -Recurse НО он копирует каталог TEST с файлами в нем. Я хочу только файлы (без TEST каталога). Как это сделать ? Спасибо за помощь. – Roberto

+0

@ Roberto посмотри в конец моего ответа – Matt

+0

Спасибо большое :) – Roberto

0

В случае сомнений, команда Get-Help.

PS C:\> Get-Help Copy-Item -ShowWindow 

-------------------------- EXAMPLE 3 -------------------------- 
This command copies the contents of the C:\Logfiles directory 
to the C:\Drawings\Logs directory. It creates the \Logs 
subdirectory if it does not already exist. 

Windows PowerShell 
PS C:\> Copy-Item C:\Logfiles -Destination C:\Drawings\Logs -Recurse 
Смежные вопросы