2017-11-20 1 views
-1

동일한 명명 규칙을 따르는 여러 파일의 이름을 바꾸려는 경우, 이름의 끝에있는 날짜 만 변형됩니다.원본 파일 이름을 다시 배열하여 여러 파일의 이름 바꾸기

예를 TRADARCASHROLLUP.GRPTIRHK.01052017.CSV를 들어 내가 대신 01052017.TRADARCASHROLLUP.GRPTIRHK.CSV

누군가가 나에게 이것을 달성하기 위해 배치 스크립트를 작성 도움이 될 희망 한 날짜로 시작하는 파일의 새 이름을 싶습니다. 나는 다른 해답을 보았지만 이것을 적용 할 수 없었다.

나는 사용하여 시도 한 다음

ls | %{ "C:\UBSTesting\Incoming\TRADARCASHROLLUP.GRPTIRHK*" $_.name ($_.name 
-replace '^(\w+).(\w+).(\w+)', '$3.$1.$2')} 
+0

우리는 그 해결책이 작동하도록 도울 수있는 시도했다 – Matt

+0

[편집] 귀하의 질문에 그렇게 길을 잃지 않는다 의견에. – Matt

답변

1

당신은 또한 그것을 batch-file 태그로 :

@echo off 
setlocal enabledelayedexpansion 
for %%a in (*.*.*.csv) do (
    for %%b in (%%~na) do (
    set new=%%~xb.%%~nb%%~xa 
    ECHO !new:~1! 
) 
) 
+0

고마워요, 저에게 도움이되었습니다. 그러면 YYYY \ MM \ DD가되도록 날짜를 다시 정렬 할 수 있습니까? – imconnor

+0

일부 부분 처리가 있습니다 ('set /? '참조). 참고 :'\'는 파일 이름에 유효한 문자가 아닙니다. – Stephan

2

이 코드를보십시오 : 당신은 당신이 무엇을 우리에게 보여 경우

Get-ChildItem -Path 'C:\temp' | ForEach-Object { 
    $newName = $_.Name -replace '(.+).(\d{8})', '$2.$1' 
    Rename-Item $_ -NewName $newName 
} 
관련 문제