2014-03-14 8 views
1

WindowsXP에서는 완벽하게 정상적으로 실행되지만 Windows7에서는 정상적으로 실행되지 않는 배치 스크립트가 있습니다. 다른 폴더에서 내용을 만들고 복사 할 수 있지만 새 폴더에있는 파일의 이름을 바꿀 수는 없습니다 ...windows7을 사용하여 배치 파일의 특정 폴더에 연결할 수 없지만 XP에서는 정상입니다. XP에서는 그 특정 디렉토리에 <path> cd를 사용했습니다.

cd가 작동하지 않습니다 (새 폴더 경로). 실제로는 새 폴더에 연결하지 못했습니다. 폴더 이름을 바꿉니다.

이것은 내가 시도한 것입니다.

  @echo off 

시작 ::

는 : 명령 프롬프트를 사용자 정의 할 수

  :createFolder 
     set /p folderName= New Folder Name...: 
     if exist %folderName% goto :error else :yes 

: : : : 소스 폴더 경로

  set /p fName=Which folder contents are to be copied to the new folder: 

를 입력 입력 대상 폴더 경로

  set /p path= Location of new folder..: 
     cd /d %path% 

:: CD \ MD %의 경로를 생성하고 새 폴더에 파일을 복사 % \ % 폴더 이름 %

  %systemroot%\System32\xcopy "%fName%" "%path%\%folderName%" /e/h/k/s 


     cd %path%\%folderName% 

:: 일괄

 set /p pathName=Enter The new pattern: 
     set "number= %pathName%" 
     set "number=%number:~-8%" 

     for %%f in (*.xlsx) do (
      set "file=%%f" 
      CALL :renameToNumber 

     ) 
     :renameToNumber 


      ren "%file%" %file:~0,-13%%number%.xlsx 


     :yes 
      echo The folder %folderName% created successfully! 

     goto :1 
     exit 

     :error 
      echo The folder %folderName% already exist! 
      goto :createFolder 
     exit 

CD가 Windows7의에서 일하고 이름 바꾸기 실행 ?? 그렇지 않은 경우 특정 디렉토리에 어떻게 접근합니까? 다른 권한이 필요합니까 ??

+2

배치 파일에서 로컬 변수로 '% path %'를 사용하면 안됩니다. Windows/DOS에서 정규화 된 경로없이 프로그램을 실행할 때 검색 할 폴더를 설정하는 데 사용됩니다. 새 CMD 창을 열고'set path'라고 입력하면 무슨 뜻인지 알 수 있습니다. –

+2

또한 Windows Vista 이상은 권한 사용에 대해 더욱 엄격합니다. 프로세스가 상승 모드에서 실행되지 않는 한 관리자 권한 사용자는 전체 권한을 얻지 못합니다. 이로 인해 소프트웨어에서이 문제를 고려하지 않을 수 있습니다. –

+0

또 다른 문제는 드라이브간에 작동하기 때문에 CD 대신 pushD를 사용해보십시오. 예를 들어, 프롬프트가 현재 다른 드라이브 문자에 있으면 CD C : \ test \가 작동하지 않습니다. – bill

답변

0

모든 좋은 의견을 정리하면 사용자가 폴더에 액세스하고 새 폴더를 만드는 데 필요한 권한이있는 한 아래의 배치 파일이 작동합니다.

@echo off 
::start 
:createFolder 
set /p folderName= New Folder Name...: 
if exist "%folderName%" goto :error else :yes 

:: enter source folder path 
set /p fName=Which folder contents are to be copied to the new folder: 

:: enter destination folder path 
set /p newFolder= Location of new folder..: 
cd /d "%newFolder%" 

:: creating and copying files to new folder cd\ md %path%\%folderName% 
%systemroot%\system32\xcopy.exe "%fName%" "%newFolder%\%folderName%" /e/h/k/s 

cd /d "%newFolder%\%folderName%" 

:: Running Batch Rename 
set /p pathName=Enter The new pattern: 
set "number= %pathName%" 
set "number=%number:~-8%" 

for %%f in (*.xlsx) do (
    set "file=%%f" 
    CALL :renameToNumber 
) 

:renameToNumber 
ren "%file%" "%file:~0,-13%%number%.xlsx" 

:yes 
echo The folder %folderName% created successfully! 

goto :1 
exit 

:error 
echo The folder %folderName% already exist! 
goto :createFolder 
exit