2017-10-11 3 views
0

모든 하위 디렉토리 및 파일과 함께 디렉토리에서 파일을 복사하려고합니다. 이미 알았 듯이, robocopy로 쉽게 할 수 있습니다.Powershell robocopy 오류시 파일 이름 바꾸기

robocopy $source $dest $arg $logfile_temp 

내 문제는 그들이 리눅스 서버에 위치하기 때문에, 자신의 이름에 ":"이 포함 된 소스 디렉토리에있는 일부 파일 ( 대부분 .PNG-파일)이 있다는 것을 (A를 포함입니다 타임 스탬프).

지금, 나는 또 다른 디렉토리에있는 모든 파일을 ROBOCOPY을 원하고 매번 오류 때문에 이름의 해당 ":"의, 파일이 임시-위치에 복사해야 발생, 이름이 변경 (":" ->".") 목적지 디렉토리에 복사 할 수 있습니다 (기본적으로 orignial 파일은 그대로 유지됩니다). -whatif 매개 변수로

gci 'C:\temp\stack' | Rename-Item -NewName {$_.Name -replace ':','.' } -whatIf 

할 것입니다 :

누군가가이 질문을 :) 대답 할 수 있다면 좋지 않을까은

+0

그래서 내가 먼저 할 일은 powershell 문제를 해결하고 파일을 robocopy하는 것입니다. 그래서 powershell을 사용하여 ":"을 포함하는 파일의 이름을 바꾸고 나중에 새 위치로 복사합니다. 당신이하려는 것은 당신이 필요로하는 것보다 더 어렵게 만드는 것입니다. – Snak3d0c

+0

그러나 원본 파일은 변경하면 안됩니다. 모든 파일의 복사본을 만들어 이름을 변경해야합니다. 하지만 원래 경로를 어떻게 유지할 수 있습니까? 복사 된 파일은 Source-Directory에서와 동일한 경로에 있어야하기 때문에? –

+0

문제는 Windows 시스템에서 파일 이름에 \/: *? "<> |을 허용하지 않기 때문에 먼저 복사 한 다음 이름을 바꿀 수 없습니다. 알 겠어.) – Snak3d0c

답변

0

이것은 당신이 그들이 앉아있는 경로에 파일 이름을 바꿀 것입니다 방법입니다 만약. 제거하면 파일의 실제 이름이 변경됩니다.

+0

감사합니다! 이전에 파일의 이름을 바꿀 수 있었지만 모든 파일을 반복하고 원래 디렉토리를 유지할 수 없었습니다. –

+0

문제가 해결되지 않은 경우 응답으로 표시 – Snak3d0c

0

내 마지막 스크립트는 다음과 같습니다 : 나는 모든 반복, 그 후

robocopy $source $temp /e /Log+:$temp\copyLog.txt 

:

$source = "..." 
$temp = "..." 
$dest = "..." 
$arg = "..." 
$logfile_temp = "..." 
$logfile_dest = "..." 

가 그럼 난 임시 디렉토리에 모든 파일을 복사 먼저 나는 몇 가지 변수를 초기화 내 Temp-Directory에있는 파일과 그 이름에 ":"가 포함 된 파일을 검색하십시오. 이름 :

Get-ChildItem -recurse | where {! $_.PSIsContainer} | 
    Rename-Item -NewName {$_.name -replace '#','.'} 

마지막으로 이러한 파일/디렉토리를 대상 디렉토리에 복사 할 수 있습니다.

robocopy $temp $dest /e /Log+:$dest\copyLog.txt 

또한 프로세스의 출력을 "copyLog.txt"에 기록합니다.

관련 문제