2016-02-24 5 views
1

У меня есть следующий код, который прекрасно работаетAmpersand, кажется, разделив свою переменную - пакетный файл

set "findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\%PrimaryApplicantLast%, %PrimaryApplicantlFirst%" 
..... 
@echo %DATE% %time:~0,-6% [%findest%] >> log.txt 

Когда я бегу те же команды, но с% найдешь% быть немного длиннее и содержащий & символ, он, кажется, разделяет переменную% findest% at или сразу после &.

Проблема код -

SET "findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\%PrimaryApplicantLast%, %PrimaryApplicantlFirst% & %SecondaryApplicantLast%, %SecondaryApplicantFirst%" 
.... 
@echo %DATE% %time:~0,-6% [%findest%] >> log.txt 

Там будет много больше происходит в моем коде, но это написание в мой файл журнала, который бросает ошибку, ошибка является% SecondaryApplicantLast% не действительная команда, оставив меня поверить, что мой код был разделен.

Ошибка -

Press any key to continue . . . 
Wed 24/02/2016 13:21 [\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\EXAMPLE, test 

'EXAMPLE2' is not recognized as an internal or external command, 
operable program or batch file. 
Press any key to continue . . . 

Приветствия

EDIT -

@echo 
setlocal enableDelayedExpansion 
echo. 


echo. Client Folder Creator! 
echo. 
echo. Follow the instructions to create appropriate client folders. 
echo -------------------------------------------------------------------------------- 

:choice 
Set /P c=".Are there multiple applicants[Y/N]?" 


:Primary 
echo. 
echo "Primary Applicant" 
echo. 
set /P "PrimaryApplicantlFirst=Enter First Name: " 
set /P "PrimaryApplicantLast=Enter Last Name: " 
echo. 

call :toUpper PrimaryApplicantLast 


if /I "%c%" EQU "N" goto :CreateFolders 
if /I "%c%" EQU "Y" goto :Secondary 


:Secondary 
echo "Secondary Applicant" 
echo. 
set /P "SecondaryApplicantFirst=Enter First Name: " 
set /P "SecondaryApplicantLast=Enter Last Name: " 
echo. 

call :toUpper SecondaryApplicantLast 


goto :CreateFoldersMulti 


:CreateFoldersMulti 
SET "findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\%PrimaryApplicantLast%, %PrimaryApplicantlFirst% ^& %SecondaryApplicantLast%, %SecondaryApplicantFirst%" 
robocopy Z:\ProjectIT\BAT\test "%findest%" /e /NFL /NDL /NJH /NJS 
SET blanknum=1 
SET "finsubdest=-BLANK-%PrimaryApplicantLast% & %SecondaryApplicantLast%." 

IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 

robocopy Z:\ProjectIT\BAT\Construction "%findest%\%blanknum%%finsubdest%" /e /NFL /NDL /NJH /NJS 


echo Folder has been created for "%PrimaryApplicantLast% & %SecondaryApplicantLast%" 
echo. 
@echo "%findest%" 
echo. 


pause 


@echo %DATE% %time:~0,-6% [%findest%] >> log.txt 


%SystemRoot%\explorer.exe "%findest%" 

pause 

goto :eof 


:CreateFolders 
set "source=Z:\ProjectIT\BAT\test" 
set "findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\%PrimaryApplicantLast%, %PrimaryApplicantlFirst%" 
robocopy "%source%" "%findest%" /e /NFL /NDL /NJH /NJS 
SET blanknum=1 
set finsubdest=-BLANK-%PrimaryApplicantLast% 

IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 
IF EXIST "%findest%\%blanknum%%finsubdest%" ( 
    SET /A blanknum=blanknum+1  
) 

robocopy Z:\ProjectIT\BAT\Construction "%findest%\%blanknum%%finsubdest%" /e /NFL /NDL /NJH /NJS 


echo Folder has been created for "%PrimaryApplicantLast%" 
echo. 
echo %findest% 
echo. 


pause 


@echo %DATE% %time:~0,-6% [%findest%] >> log.txt 



%SystemRoot%\explorer.exe "%findest%" 

goto :eof 
:--------------------------------------------------------------------- 


:toUpper str -- converts lowercase character to uppercase 
if not defined %~1 EXIT /b 
for %%a in ("a=A" "b=B" "c=C" "d=D" "e=E" "f=F" "g=G" "h=H" "i=I" 
      "j=J" "k=K" "l=L" "m=M" "n=N" "o=O" "p=P" "q=Q" "r=R" 
      "s=S" "t=T" "u=U" "v=V" "w=W" "x=X" "y=Y" "z=Z" "ä=Ä" 
      "ö=Ö" "ü=Ü") do (
    call set %~1=%%%~1:%%~a%% 
) 
EXIT /b 

ответ

1

предшествуют & с кареткой ^ таким образом: ^&

Каретка будет, если используется рассудительно, выключите особое значение следующего характера (& является "сцепить команды")


@ECHO OFF 
SETLOCAL 
SET "PrimaryApplicantLast=PAL" 
:: Examine the next SET very carefully. It's copied directly from your original code... 
SET "PrimaryApplicantlFirst=PAF" 
SET "SecondaryApplicantLast=SAL" 
SET "SecondaryApplicantFirst=SAF" 
SET "findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\%PrimaryApplicantLast%, %PrimaryApplicantlFirst% ^& %SecondaryApplicantLast%, %SecondaryApplicantFirst%" 
SET fi 
@echo %DATE% %time:~0,-6% [%findest%] 

GOTO :EOF 

Для меня получается:

findest=\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\PAL, PAF ^& SAL, SAF 
24/02/2016 13:45 [\\CFFS\CF_Networked_Files\!!CLIENT DOCUMENTS\PAL, PAF & SAL, SAF] 
+0

К сожалению это привело к той же ошибке. Я выложу весь свой код - может быть, ошибка лежит где-то в другом месте. –

+0

Может быть, если вы повторили операцию в настройке 'finsubdest'? – Magoo

+0

без кости с этим. Мой код вызывает другие странные ошибки. Это понижает !! от !! КЛИЕНТСКИЕ ДОКУМЕНТЫ и копирование файлов в новую папку КЛИЕНТСКИЕ ДОКУМЕНТЫ. Возможно, плохой день для партии. Завтра я получу еще один взгляд! –

Смежные вопросы