Я не могу получить доступ к определенной папке в пакетном файле с помощью Windows7, но в Xp это нормально. В XP я использовал cd ‹путь› к этому конкретному каталогу

У меня есть пакетный скрипт, который отлично работает в WindowsXP, но не в Windows7. Я могу создавать и копировать содержимое из одной другой папки, но переименование файлов в новой папке невозможно...

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%\%folderName%

         %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?? Если нет, то как мне добраться до конкретного каталога?? Нужно ли какое-то другое разрешение??


person user3418693    schedule 14.03.2014    source источник
comment
Вы не должны использовать %path% в качестве локальной переменной в пакетном файле. Он используется Windows/DOS для задания папок для поиска при запуске программы без полного пути. Откройте новое окно CMD и введите set path, чтобы понять, что я имею в виду.   -  person James L.    schedule 14.03.2014
comment
Кроме того, Windows Vista и более поздние версии более строги в отношении использования разрешений: пользователи-администраторы не получают полных разрешений, если процесс не выполняется в режиме с повышенными правами. Это может вызвать проблемы с программным обеспечением, не принимая во внимание это.   -  person Xavier Rubio Jansana    schedule 14.03.2014
comment
Другое дело, попробуйте использовать pushD вместо CD, так как он будет работать на разных дисках. CD C:\test\, например, не будет работать, если приглашение в настоящее время находится на другой букве диска.   -  person bill    schedule 29.04.2014
comment
@bill вы можете заставить cd также изменить диск, если вы используете параметр /d, например: cd /d d:\temp   -  person a_horse_with_no_name    schedule 27.06.2014


Ответы (1)


Собрав вместе все хорошие комментарии, приведенный ниже пакетный файл должен работать, пока у пользователя есть необходимые разрешения для доступа к папкам и вообще для создания новой папки.

@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
person Mofi    schedule 27.06.2014