Windows 명령 프롬프트-재배치 된 사용자의 문서 폴더 가져 오기


8

%userprofile%\Documents디렉토리 에서 일부 파일을 복사하는 간단한 배치 스크립트를 작성하려고합니다 . 내 컴퓨터에서 스크립트를 테스트하고 있지만 일부 실패 후 사용자 데이터를 별도의 파티션으로 옮겼 음을 깨달았습니다 . 따라서, %userprofile%\Documents이다 , 그리고 (당연히) 아무것도 복사되지 않습니다.

나는 이미 %homedrive%and와 같은 다른 환경 변수를 시도 %homepath%했지만 여전히 표준을 가리 킵니다.C:\...

사용자 데이터에 사용 된 실제 드라이브 를 찾는 방법이 있습니까?

Windows 10을 사용하고 있습니다.

감사!

편집하다

Ƭᴇcʜιᴇ007에서 지적했듯이 사용자 데이터를 다른 파티션으로 옮기지 않았지만 "메인"폴더 (문서, 비디오 등 ...)를 다른 파티션의 해당 폴더로 재배치했습니다. ) 문서, 속성, 경로.

이 방법으로 재배치 된 문서 폴더의 경로를 어떻게 알 수 있습니까?


2
프로필 폴더를 올바르게 재배치하는 한 % userprofile %은 위치에 관계없이 올바른 폴더를 가져야합니다. 그렇다면 어떻게 다른 파티션으로 정확히 옮겼습니까?
Ƭᴇcʜιᴇ007

좋아, 나는 정직하게 기억하지 않았기 때문에 조금 탐색하고 마침내 내가 한 일을 알았습니다. "기본"폴더 (문서, 비디오 등)를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택한 다음 경로 탭을 선택하고 경로를 변경했습니다. (이탈리아어 버전의 Windows를 사용하고 있으며 화면에 보이는 이름을 간신히 번역 할 때 일부 단어가 다를 수 있습니다). 당신이 옳았습니다. % userprofile %는 전혀 잘못하지 않았습니다. 그러나 문제는 여전히 "주"문서 폴더의 실제 경로를 어떻게 찾을 수 있습니까?입니다.
Alessandro

그런 다음 문서 "라이브러리"를 사용자 프로필 경로의 문서 폴더와 혼동하고 있다고 생각합니다. 두 가지 다른 ...
Ƭᴇcʜιᴇ007

이러한 방식으로 재배치되었다는 점을 고려하여 문서 폴더의 경로를 찾는 방법이 있습니까?
Alessandro

답변:


5

불행히도, 프로파일과 관련된 기본 경로에서이를 리디렉션 한 경우 배치 스크립트에서 확인할 수있는 간단한 환경 변수가 없습니다. 여기에서 환경 변수의 전체 목록 (문서화되지 않은 일부 포함)을 볼 수 있습니다.

http://ss64.com/nt/syntax-variables.html

명심해야 할 또 다른 사항은 폴더 리디렉션을 사용하여 폴더를 네트워크 공유로 이동할 수도 있다는 것입니다. 모두 사용할 수있는 "드라이브"가 필요하지 않습니다. UNC 경로 일 수 있습니다.

좋은 소식은 원하는 정보가 레지스트리의 다음 위치에 있다는 것입니다.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell 폴더 \ 개인

해당 User Shell Folders키 에서 이동할 수있는 전체 폴더 세트가 있지만 Windows Batch를 사용하여 여기에서 내 문서 폴더를 읽으려면 다음과 같습니다.

reg query "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders" /v Personal

내 컴퓨터에서 다음과 같은 출력을 생성합니다. 필요한 내용과 Windows Batch 스크립트의 성능에 따라 다소 유용 할 수 있습니다.

HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ User Shell 폴더
    개인 REG_EXPAND_SZ C : \ Users \ joel \ Documents

vbscript를 사용해 볼 수도 있습니다.

Set wshshell = CreateObject("WScript.Shell")
Documents = wshShell.SpecialFolders("MyDocuments")

또는 Powershell :

[Environment]::GetFolderPath('MyDocuments')

이것은 결국 Windows에서도 bash를 통해 사용할 수 있지만 (실제로!) 일관되게 정확한 방법으로 아직 수행 방법을 보지 못했습니다.


3

현재 폴더 또는 컴퓨터의 알려진 일부 위치에 대한 쓰기 권한이 있다고 가정하면 PowerShell을 사용할 수 있습니다!

Environment.GetFolderPath함수는 Documents 폴더를 포함하여 잘 알려진 위치 의 파일 시스템 경로를 가져올 수 있습니다 . 이 PowerShell 명령은 문서 경로를 인쇄합니다.

[Environment]::GetFolderPath('MyDocuments')

Out-Filecmdlet 을 사용하여 파일에 쓸 수 있습니다 . 재 지정 연산자 >는 BOM으로 유니 코드 텍스트 파일을 생성하기 때문에 실제로 작동하지 않습니다. 배치 프로세서에서는 작업하기가 어렵습니다.

[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii

이 파일은을 사용하여 배치 변수로 읽을 수 있습니다 set /p. 이를 종합하면 다음과 같은 배치 스크립트 조각이 생성됩니다.

powershell -Command "[Environment]::GetFolderPath('MyDocuments') | Out-File 'docspath.tmp' -Encoding ascii"
set /p DOCSPATH=< docspath.tmp
del docspath.tmp

사용자의 문서 폴더 경로는 이제로 표현 될 수 있습니다 %DOCSPATH%.


1

나는 믿을만한 대답이있다. 답변을 할 수있는 파워 쉘의 조합

for /f "delims=" %%a in ('powershell.exe -command "& {write-host $([Environment]::GetFolderPath('MyDocuments'))}"') do Set "$Value=%%a"
Echo Value received from Powershell : %$Value%

$CMD 변수 이름에서를 사용할 수 있다는 것을 몰랐습니다 . 그러나 당신은 그것이 드문 사용법이라는 것을 알고 있습니까?
Scott

0

꽤 간단합니다 :)

데스크탑 폴더의 위치는 다음과 같습니다.

\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ Shell 폴더

또는 PowerShell에서 훨씬 간단합니다.

$ DesktopPath = [환경] :: GetFolderPath ( "Desktop")

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.