2014-03-14 13 views
1

我有一个运行在Windows XP中,但不会在Windows7完美的罚款批处理脚本。我能够创建和复制另一个文件夹中的内容,但是,在新文件夹中重命名文件是不可能的...我无法使用Windows7访问批处理文件中的特定文件夹,但在Xp中可以。在XP我用CD <path>到特定的目录

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 %PATH%\%文件夹名称%

  %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

另一件事,尝试使用pushD而不是CD,因为它可以跨驱动器使用。例如,如果提示符当前位于不同的驱动器号上,则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 
相关问题