저는 Windows Bat 파일 프로그래밍에 익숙하지 않으므로 이에 대한 도움을 주시면 감사하겠습니다.
다음을 수행하려면 bat 파일이 필요합니다.
- 파일 이름에서 폴더 이름을 추출합니다. 예를 들어 파일 이름 "123-Chemistry-101.rep"에서 Chemistry를 추출합니다. "-"는 토큰의 시작과 끝을 표시하는 데 사용할 수 있습니다.
- 동일한 파일을 Chemistry라는 폴더로 이동합니다. 화학은 모든 보고서가 있는 하위 디렉토리가 됩니다.
아마도 두 번째 부분(이 사이트에서 찾은)을 수행할 수 있지만 첫 번째 부분은 내 능력을 넘어서는 것입니다.
예를 들어, (*.rep)의 /RU:\Test %%f의 경우 %%f U:\test\Chemistry\를 복사하세요.
감사합니다, 듀랜드
답변1
당신이 요청했지만 오늘은 그런 작업을 수행하기에 다소 구식이라고 생각하기 때문에 귀하의 시스템이 다음을 지원하기를 바라 Batch
면서 대답했습니다 .Powershell
Batch
Powershell
$rootDir = "U:\Test"
$files = Get-ChildItem $rootDir -Filter *.rep
foreach($file in $files) {
$folder = $file.toString().split("-")[1]
$sourcefile = "$rootDir\$file"
$targetdir = "$rootDir\$folder"
if(!(Test-Path -Path $targetdir )){
New-Item -ItemType directory -Path $targetdir
}
Move-Item $sourcefile $targetdir
}
@Karan 편집:
재귀(하위 디렉터리 트리 유지):
$rootDir = "U:\Test"
$files = Get-ChildItem $rootDir -Filter *.rep -Recurse
foreach($file in $files) {
$sourcefile = $file.Fullname
$filepath = $file.PSParentPath
$newfoldertocreate=$file.toString().split("-")[1]
if(!(Test-Path -Path $filepath\$newfoldertocreate)){
New-Item -ItemType directory -Path $filepath\$newfoldertocreate
}
Move-Item $sourcefile $filepath\$newfoldertocreate
}
답변2
상위 폴더에서 이 배치 파일을 실행합니다.보고서 폴더:
for /f "delims=" %%a in ('dir /b /s "Reports folder\*.rep"') do for /f "tokens=2 delims=-" %%i in ("%%~a") do (
if not exist "%%~dpa%%i\" md "%%~dpa%%i"
move "%%~a" "%%~dpa%%i\"
)
%%a와 %%i는 두 변수에 사용되는 변수입니다.~을 위한루프. 전자는 .REP 파일에 대한 전체 경로를 포함하고(외부 루프 제공), 후자는 파일 이름에서 추출된 폴더 이름을 포함합니다(내부 루프 제공).
for /?
관심 있는 사람이라면 누구나 더 많은 도움을 받아야 할 것입니다(배치 파일에서는 % 기호가 두 배가 됩니다).
%~I - expands %I removing any surrounding quotes (")
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
그럼 "%%~dpa%%i"는 무슨 뜻인가요? .REP 파일 중 하나가 다음 위치에 있다고 가정합니다.디렉토리명령은 "C:\Reports folder\123-Chemistry-101.rep"
.
%%~dpa는 주변 따옴표를 제외한 파일의 드라이브 문자와 경로를 의미합니다 C:\Reports folder\
. 즉, .
%%나위에서 언급한 것처럼 파일 이름에서 추출된 폴더 이름(두 개의 하이픈 구분 기호 사이의 모든 이름)이 됩니다. 따라서 이 경우에는 Chemistry
.
모두 합치면 이 파일의 "%%~dpa%%i"는 로 확장됩니다 "C:\Reports folder\Chemistry"
. 왜냐하면 파일을 이동하려는 위치가 바로 이 위치이기 때문입니다.