2017-11-28 2 views
-2

WinAutomation을 사용하고 있으며 경로에서 사용자 이름을 하드 코드하지 않고도 내 소프트웨어가있는 컴퓨터에서 파일을 가리키고 열려고합니다. 로그인 한 사용자 이름을 검색하는 방법을 찾고 있는데 대소 문자를 구분하므로 해당 변수를 잡을 수 있습니다. 파일 트리에서 사용자 이름이 다음 반환 "사용자 이름"것 WHOAMI "사용자 이름"이며, 경우 (필자는 백그라운드에서 사용자에게 보이지 않는 실행할 수 있습니다) Windows 명령 줄을 사용하여사례 검색 Windows 명령 'whoami'사용자 이름

,

만약 내가 파일 C:\Users\%pcName%\Desktop\Masterlist.xlsx을 정확히 가리키면 %pcName%이 제대로 작동하지 않을 것입니다 ...

대소 문자 구별 경로를 검색하는 Python 방법에 대한 질문을 보았습니다.하지만이 경우에는 Python을 사용할 수 없습니다. 대/소문자를 구분하는 사용자 이름을 얻는 창의적인 방법에 대해 열려 있지만 해결책으로 소문자 사용자 이름을 적용하기로 결정한 사람들을 계속보고 있습니다.

파일 경로 참조에 사용할 대/소문자 구분 로그인 사용자 이름을 찾는 방법이 있습니까?나는이 시점에서 창조적이라는 것에 개방적이다 !!

+2

프로파일 디렉토리가 c : \ Users 아래에 있다고 아무도 말하지 않았습니다. Windows XP 또는 서버의 프로필 디렉토리가있는 도메인의 모든 PC 아래에 있지 않습니다. 최소한 % userprofile %를 사용해야합니다 (데스크톱 위치를 묻고 싶다면 여전히 올바르지 않습니다). –

+0

@ 로스, 내 게시물 편집, DOS 태그 및 내 질문에 사용, winautomation (내가 사용하고 묻는 프로그램)의 기능을 제거하기 위해 귀하의 강점을 평가할 수있는 동안 말 그대로 "DOS 명령 실행 "따라서이 솔루션을 찾고 다시 포함하려는 다른 사용자에게 도움이 될 수 있습니다. –

+1

질문에 "DOS 명령을 실행하십시오"라는 구를 사용하여 특정 이름의 특정 기능을 언급했다면 예, 귀하의 게시물에서 그것을 제거하는 것은 실수 였을 것입니다. 그러나 DOS는 사용자 명이나 실행중인 백그라운드 개념이없는 구식의 오래된 16 비트 운영 체제입니다. 실수로 사용하는 응용 프로그램이 Windows 명령 줄을 "DOS"로 변경한다는 사실은이를 변경하지 않습니다. 당신이 주장하는 경우 귀하의 게시물에 DOS 단어의 잘못된 사용을 편집 할 수 있지만 [dos] 태그는 MS-DOS 및 해당 클론에 대한 질문에만 사용됩니다. –

답변

0

먼저 귀하의 요청이 XY issue임을 분명히하겠습니다. 당신은 뭔가를 이루려고 노력하고 있습니다. 처럼 보입니다. 해결책은 사용자 이름으로 대소 문자를 수정하는 것입니다. 그러나 이에 대한 몇 가지 논점이 있습니다.

  1. Windows 파일 이름은 대/소문자를 구분하지 않습니다. 어떤 케이스를 사용하든 상관 없습니다. 어쩌면 다른 구성 요소가 이러한 이름을 대소 문자를 구분하여 비교해서는 안됩니다. 이 경우 구성 요소를 고정해야합니다.
  2. Windows의 사용자 이름은 대/소문자를 구분하지 않습니다. 어떤 케이스로도 로그온 할 수 있습니다.
  3. 경로가 C:\Users\%pcname%인데, 모양은 %USERPROFILE%입니다. 그러나 사용자 프로필은 반드시 C:\Users이 아닙니다. 어디든 옮길 수있었습니다.

정확하게 "작동하지 않는"것과 그 이유가 무엇인지는 분명하지 않습니다. 근본 원인을 진단 할 수있는 오류 메시지를 지정하지 않으므로 실제 문제를 해결할 수 있습니다.

당신은 파이썬을 사용할 수는 없지만 사용할 수있는 다른 프로그래밍 언어는 지정하지 않았으므로 과 동일한 의미로 을 처리하겠습니다.

C:\Users\For example John>echo %username% 
For example John 

그러나 경고 : 사건의 90 + %,이 올바른 접근하지 진짜 문제가 무엇이든간에

echo %username% 당신을 위해 무엇을 물어 않습니다.

C#에서, 당신은

Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) 
사용자 프로파일에 대한

과 데스크탑

Environment.GetFolderPath(Environment.SpecialFolder.Desktop) 

을 사용합니다.

+1

이것은 나쁜 조언입니다. 사용자 이름 환경 변수를 사용하여 사용자의 프로파일 디렉토리에 대한 경로를 구성하는 것은 잘못되었습니다. –

+0

@AndrewMedico : 그 점을 명확하게하기 위해 답을 업데이트했습니다. –

+0

이것이 사용자 이름을 올바르게 반환하는 경우 90 %의 경우 왜 잘못 되었습니까? –

0

Winautomation에는 현재 PC의 데스크톱에 파일 경로를 변수로 반환하는 "특수 폴더 가져 오기"기능이 있습니다. 그런 다음이 변수를 액세스하려고 시도하는 루트의 루트로 사용할 수 있습니다.

이것은 데스크탑 파일 경로에 도달하는 올바른 방법이며 특별한 DOS 사용은 필요하지 않습니다.