답변:
시작 cmd하고 실행 상자에 입력하십시오 . cmd를 시작 cd하고 원하는 폴더로 이동하십시오.
cd \
그때
dir /x
C:\>dir /x
13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
/s스위치는 하위 폴더 재귀를 수행합니다
편리한 디렉토리에 bat 파일을 만든 다음 해당 경로에서 짧은 경로를 복사하여 붙여 넣을 수 있습니다.
현재 디렉토리에서도 명령을 command.com계속 실행 하고 실행할 수 cd있습니다.
Windows 배치 스크립트에서 %~s1경로 매개 변수를 짧은 이름으로 확장합니다 . 이 배치 파일을 작성하십시오.
@ECHO OFF
echo %~s1
나는 내 shortNamePath.cmd전화를하고 다음과 같이 부릅니다.
C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1
다음은 매개 변수가 제공되지 않은 경우 현재 디렉토리를 사용하는 버전입니다.
@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1
매개 변수없이 호출됩니다.
C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1
사용 SET및 명명 된 변수
Windows 명령 프롬프트에는 특히 유닉스 배경이있는 경우 배우고 이해하기 어려운 값의 공백이있는 변수를 처리하기위한 몇 가지 규칙이 있습니다. 넌 할 수있어
SET TESTPATH=c:\Program Files (x86)\Android\android-sdk
( 따옴표 없이 ) 또는
SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"
(직관적이 아닌 따옴표의 배치에 유의하십시오); 그때
CALL :testargs "%TESTPATH%"
︙
:testargs
echo %~s1
goto :eof
다음은 하나의 라이너입니다 .
cmd /c for %A in ("C:\Program Files") do @echo %~sA
고장 :
cmd /c -Windows 명령 인터프리터의 새 인스턴스를 시작하고 문자열로 지정된 명령을 수행 한 다음 종료for %%parameter in (set) do 명령-조건부로 명령을 여러 번 수행합니다.echo-화면에 메시지를 표시합니다. @기호는 ECHO OFF현재 행에만 적용되는 것과 같습니다 .%~s -확장 경로에는 짧은 이름 만 포함됩니다.출처 :
cmd /c가요? 명령 프롬프트 창에있는 경우 명령을 입력하기 만하면 for %A in ("C:\Program Files") do @echo %~sA"실행"대화 상자에 입력하면 결과가 사라지기 전에 읽을 수 있습니다.
cmd /c실행할 때 필요하지 않습니다 cmd. PowerShell 에서 필요 하지만 다음 '...'이후에도 토큰을 /ccmd /c 'for %f in ("C:\Program Files") do @echo %~sf'
"짧은 이름"은 실제로는 오래된 DOS 8.3 이름 지정 규칙이므로 모든 디렉토리는 처음 6 자 ~1이며 일치하는 이름이 하나만 있다고 가정합니다.
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory
여기 유일한 예외입니다
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well
...~4) 뒤에 해싱처럼 시작 됩니다 ( 예 : ABxxxx~1x는 16 진수)-읽기가 쉽지 않습니다.
ABCDEFGH-CAT짧은 이름을 얻습니다 ABCDEF~1. 그런 다음 생성 ABCDEFGH-DOG하면 짧은 이름을 얻습니다 ABCDEF~2. 그런 다음을 삭제 ABCDEFGH-CAT해도 ABCDEFGH-DOG여전히 짧은 이름을 갖습니다 ABCDEF~2. 긴 이름 만보고 말할 방법이 없습니다.
~1. Windows가 짧은 이름을 생성하는 데 사용하는 규칙을 참조하십시오 . 또한을 사용하여 짧은 이름을 수동으로 설정할 수도 fsutil있으므로 두 이름의 관계가 전혀 없을 수도 있습니다. 하드 링크 또는 소프트 링크는 물론
Powershell이 설치되어 있으면 현재 디렉토리 (또는 다른 것)의 짧은 경로 이름을 해결하는 매우 편리한 방법을 찾았습니다.
현재 디렉토리에서 Powershell 열기
cmd windows에서 powershell을 입력하십시오.
gui에 폴더가 열려 있으면 폴더의 주소 표시 줄에 cmd.exe 또는 powershell.exe를 직접 입력 할 수 있습니다.
그런 다음 명령을 내리십시오
(New-Object -ComObject Scripting.FileSystemObject).GetFolder(".").ShortPath
정보 출처 : [ https://gallery.technet.microsoft.com/scriptcenter/Get-ShortName-90a49303]
Ivan Schwartz의 답변 과 마찬가지로 "C : \ Program Files"를 %cd%현재 디렉토리로 바꿀 수 있습니다 .
cmd /c for %A in ("%cd%") do @echo %~sA
또는 PathCopyCopy 라는이 멋진 도구를 사용할 수 있습니다
몇 번의 클릭만으로 상황에 맞는 메뉴에서 문자 그대로 모든 폴더의 길고 짧은 경로를 얻을 수 있습니다.
대상 폴더 => 경로 복사 => 짧은 경로를 마우스 오른쪽 버튼으로 클릭하십시오.
끝난. 클립 보드에 복사됩니다.
npm install상용구에서 실행 하여 노드 모듈을 설치했습니다 . 해당 폴더를 삭제하려고 시도하는 동안 경로가 너무 길어서 처리 할 수 없으므로 Windows에서 폴더를 삭제할 수 없습니다.
약간의 연구를 마친 후에는 루트에서 리프로 폴더의 이름을 바꾸는 자체 코드 스 니펫이 맞을 것이라고 생각 하여이 시도에 대한 위반 예외가 발생합니다.
그것은 나를 위해 작동합니다. 다음은 C # 프로젝트의 코드입니다.
public static int directoryCounterIndex = 0;
public static void Main(string[] args)
{
string dirPath = @"D:\Studies\MeanStack\a\nodem";
RenameDirectories(dirPath);
}
private static void RenameDirectories(string dirPath)
{
directoryCounterIndex += 1;
var newPath = Path.GetDirectoryName(dirPath) + Path.DirectorySeparatorChar + directoryCounterIndex.ToString();
Directory.Move(dirPath, newPath);
var subDirectories = Directory.GetDirectories(newPath);
foreach (var subDirectory in subDirectories)
{
RenameDirectories(subDirectory);
}
}
그냥 공백으로 바꾸십시오
%20
사물이 "번역"되는 방식이며 공백은 % 20입니다.
정말 많이 필요한 경우 브라우저를 열고 다음과 같이 입력하십시오.
test ";($#< and find the word test, and see that the space is %20 and so on...
if exist C:\Program%20Files\ (echo exists)