Пакетный скрипт, чтобы проверить, существует ли папка.Если да, то скопируйте файл из другой папки в эту папку - PullRequest
0 голосов
/ 07 июня 2018

Я новичок в программировании, без каких-либо знаний.Я создаю пакетный скрипт, который будет создавать папки на основе пользовательского ввода.Затем он скопирует файлы с общего сервера в созданные локальные папки.

У меня есть следующий сценарий:

    @ECHO OFF
REM *********************************************************************
REM **This will create directories and Copy Files for your project**
REM *********************************************************************

ECHO Plese enter the no. between 1 to 5 only
set /p input=[Please enter:1-Belgium, 2-Austria, 3-France, 4-Germany, 5-Greece]

if %input%==1 md BEL

if %input%==2 md AUT

if %input%==3 md FRA

if %input%==4 md DEU

if %input%==5 md GRE

if %input%==1 cd BEL

if %input%==2 cd AUT

if %input%==3 cd FRA

if %input%==4 cd DEU

if %input%==5 cd GRE

::ECHO Please enter the no. between 1 to 5 only

:END

set /p userinput=[Please enter your folder name]

mkdir %userinput%

cd %userinput%

set /p input=[Press 1 for 1.0, 2 for 2.0]

if %input%==1 md Folder1
if %input%==2 md Folder2
IF EXIST .\Folder1 xcopy "C:\ProgramFiles\kasras01\file2.txt"

Все время код работает хорошо, пока не придетв той части, где мне нужно проверить, существует ли папка.Если это так, то мне нужно скопировать файл из другого места в эту папку.Но я не могу заставить его работать.Я думаю, что мой синтаксис неверен.Как мне заставить его работать?Благодарен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Нижняя строка вашего опубликованного скрипта должна выглядеть примерно так:

IF EXIST "Folder1" XCOPY "C:\ProgramFiles\kasras01\file2.txt" "Folder1\" /Y

Здесь также приведен переписанный пример с использованием Choice для контролируемого ввода и Set /P с проверками для неконтролируемого ввода:

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
CD /D "%~dp0" 2>Nul || Exit /B
REM **************************************************************************
REM ** This will create directories and copy a single file for your project **
REM **************************************************************************
Echo 1. Belgium&Echo 2. Austria&Echo 3. France&Echo 4. Germany&Echo 5. Greece
Choice /C 12345 /M "Which one"
If ErrorLevel 5 MD "GRE" 2>Nul & CD "GRE"
If ErrorLevel 4 MD "DEU" 2>Nul & CD "DEU"
If ErrorLevel 3 MD "FRA" 2>Nul & CD "FRA"
If ErrorLevel 2 MD "AUT" 2>Nul & CD "AUT"
If ErrorLevel 1 MD "BEL" 2>Nul & CD "BEL"
:DirPick
Echo(&Echo Please type your chosen directory name
Set /P "UserInput= then press enter: "
If Not Defined UserInput Echo Empty names are disallowed& GoTo DirPick
SetLocal EnableDelayedExpansion
For /F Tokens^=2^ Delims^=^\^/^:^*^?^"^|^<^>^ EOL^= %%A In ("[!UserInput!]"
) Do Echo Disallowed character detected& Set "UserInput=" & GoTo DirPick
EndLocal & MD "%UserInput%" 2>Nul & CD "%UserInput%"
Choice /C 12 /N /M "Press 1 for 1.0, 2 for 2.0"
XCopy "C:\ProgramFiles\kasras01\file2.txt" "Folder%ErrorLevel%\" /Y>Nul

В настоящее время сценарий предназначен для использования своего собственного местоположения в качестве базы для новых каталогов и т. Д. Если вы хотите использовать другой базовый каталог, измените %~dp0 только в строке 3 к нужному пути.
Команда XCopy внизу в настоящее время не имеет механизма проверки, это означает, что если "C:\ProgramFiles\kasras01\file2.txt" не существует, Folder[1|2] также не будет создан!(В противном случае он создаст Folder[1|2] и скопирует в него "C:\ProgramFiles\kasras01\file2.txt".)

0 голосов
/ 07 июня 2018
IF EXIST .\Folder1\ xcopy ...

Ваш код создает (например) folder1 в каталоге current , затем ищет folder1 в каталоге parent .Добавление \ ищет каталог , а не файл.

Вам известно, что xcopy скопирует файл в текущий каталог, а не в подкаталог folder1?


xcopy "C:\ProgramFiles\kasras01\file2.txt" ".\folder%input%\"

следует создатьи скопировать.Вы, несомненно, захотите сначала проверить input 1 или 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...