すべての*.csproj.user
ファイルをC:\Code\Trunk
からC:\Code\F2
に再帰的にコピーしようとしています。
例えば:
C:\Code\Trunk\SomeProject\Blah\Blah.csproj.user
にコピーされます:
C:\Code\F2\SomeProject\Blah\Blah.csproj.user
私の現在の試みは次のとおりです。
Copy-Item C:\ Code\Trunk -Filter * .csproj.user -Destination C:\ Code\F2 -Recurse -WhatIf
しかし、私は得る:
What if:ターゲット "Item:C:\ Code\Trunk Destination:C:\ Code\F2\Trunk"で操作 "ディレクトリのコピー"を実行しています。
まず、F2\Trunk
という名前の新しいフォルダーにすべてを配置したいのですが、これは間違っています。第二に、どのファイルもリストしません。約10個のファイルをコピーする必要があります。
コマンドの正しい構文は何ですか?ありがとう!
更新:
さて、C:\Code\F2
がすでに存在しているという事実と関係があるようです。 notが存在する宛先にファイルをコピーしようとすると、機能します。
宛先にある既存の.csproj.user
ファイルをoverwriteしたい。
これを以前に見ましたが、PowerShellが正しく機能していないように思われる理由はわかりません(私見)。私がやることはもっと面倒ですが、うまくいきます。
$Source = 'C:\Code\Trunk'
$Files = '*.csproj.user'
$Dest = 'C:\Code\F2'
Get-ChildItem $Source -Filter $Files -Recurse | ForEach{
$Path = ($_.DirectoryName + "\") -Replace [Regex]::Escape($Source), $Dest
If(!(Test-Path $Path)){New-Item -ItemType Directory -Path $Path -Force | Out-Null
Copy-Item $_.FullName -Destination $Path -Force
}
本当に簡単なのに、皆さんはこれを恐ろしく複雑にしています:
Copy-Item C:\Code\Trunk -Filter *.csproj.user -Destination C:\Code\F2 -Recurse
Directoryをコピーして、F2に「トランク」ディレクトリを作成します。最上位のTrunkフォルダーの作成を避けたい場合は、PowerShellにコピーするよう指示するのをやめる必要があります。
Get-ChildItem C:\Code\Trunk | Copy -Destination C:\Code\F2 -Recurse -filter *.csproj.user
最も投票された答えは単一のファイルタイプに完全に有効ですが、複数のファイルタイプをコピーする必要がある場合は、この目的にぴったりのrobocopyと呼ばれるより便利な機能があります。
robocopy C:\Code\Trunk C:\Code\F2 *.cs *.xaml *.csproj *.appxmanifest /s
Jaykulの回答を試しましたが、うまくいきませんでした。動作させるには、以下のように変更する必要がありました。また、動作する前にC:\ Code\F2フォルダーを作成しました。
Get-ChildItem C:\Code\Trunk Recurse -filter *.csproj.user | Copy -Destination C:\Code\F2
回答1は良さそうで、目的のためにMove-Item
に変更しました。しかし、各フォルダーで再帰的に処理され、最初のファイルのみが移動することがわかりました。以下は、docファイルからpdfへの変換も含む私の完全なスクリプトです。
$Source = 'C:\Users\sgrody\Desktop\NSPM-Vol1'
$MoveFiles = '*.PDF'
$Dest = 'C:\Users\sgrody\Desktop\MedPassPDF'
$Folders = Get-ChildItem $Source -Directory -Recurse
ForEach ($Folder in $Folders)
{
$wdFormatPDF = 17
$Word = New-Object -ComObject Word.application
$Word.visible = $false
$folderpath = "$($Folder.FullName)\*"
$fileTypes = "*.docx","*doc"
Get-ChildItem -path $folderpath -include $fileTypes |
foreach-object
{
$path = ($_.fullname).substring(0,($_.FullName).lastindexOf("."))
"Converting $path to pdf ..."
$doc = $Word.documents.open($_.fullname)
$doc.saveas([ref] $path, [ref]$wdFormatPDF)
$doc.close()
}
$Word.Quit()
}
Get-ChildItem $Source -Filter $MoveFiles -Recurse | ForEach{
$Path = ($_.DirectoryName + "\") -Replace [Regex]::Escape($Source), $Dest
If(!(Test-Path $Path)){New-Item -ItemType Directory -Path $Path -Force | Out-Null
Move-Item $_.FullName -Destination $Path -Force
}
}