пакетное копирование и подавление всего вывода - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть пакетный файл, в который я копирую файлы из папок в новое место назначения.

Список папок создается пакетным файлом:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
@REM Set defaults
SET BASE_FLDR=.\
SET BLD_TYPE=Release
SET DST_FLDR=SC_APP
@REM Check if base folder specified, if not default to current location
IF NOT [%1] == [] SET BASE_FLDR=%1
@REM Check if build type specified, if not default to Release
IF NOT [%2] == [] SET BLD_TYPE=%2
@REM Display parameters
ECHO Base folder: %BASE_FLDR%
ECHO Build type : %BLD_TYPE%
@REM Does destination folder exist?
IF NOT EXIST %DST_FLDR% MKDIR %DST_FLDR%
@REM Create list of subfolders to search
FOR /F "delims=" %%F IN ('"DIR %BASE_FLDR% /S /B /A:D | FINDSTR /EIC:"%BLD_TYPE%" "') DO (
    @COPY /Y "%%F"\*.DLL "%DST_FLDR%" >NUL
    @COPY /Y "%%F"\*.EXE "%DST_FLDR%" >NUL
)

Во время процесса копирования I см. множество:

The system cannot find the file specified.

Я пробовал разные вещи, но не смог предотвратить отображение этого сообщения.

@ не останавливает его и не перенаправляет вывод на NUL, я также пытался запустить другой CMD, тоже это не останавливается.

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

Исходя из вашего самопринятого ответа, я решил опубликовать это, потому что вы проигнорировали все советы, которые я дал в комментариях:

Обратите внимание: Это не так Я бы выполнил задание, поэтому оно само по себе не является ответом, а дополняет ваш собственный ответ.

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION

REM Set defaults
SET "BASE_FLDR=."
SET "BLD_TYPE=Release"

REM Check if base folder specified, if not default to current location
IF NOT "%~1" == "" SET "BASE_FLDR=%~1"

REM Check if build type specified, if not default to Release
IF NOT "%~2" == "" SET "BLD_TYPE=%~2"
SET "DST_FLDR=%BASE_FLDR%\sc_app"

REM Display parameters
ECHO Base folder: %BASE_FLDR%
ECHO Build type: %BLD_TYPE%
ECHO Destination folder: %DST_FLDR%
ECHO Please wait

REM Does destination folder exist?
IF NOT EXIST "%DST_FLDR%\" (
    ECHO Creating %DST_FLDR%
    MD "%DST_FLDR%"
)

REM Create list of subfolders to search
ECHO Copying DLL's and EXE's to %DST_FLDR%
FOR /F "DELIMS=" %%F IN ('"DIR /B /S /AD "%BASE_FLDR%" | FINDSTR /EIC:"%BLD_TYPE%""') DO (
    ECHO | SET /P "=."
    COPY /Y "%%F\*.DLL" "%DST_FLDR%" >NUL 2>&1
    COPY /Y "%%F\*.EXE" "%DST_FLDR%" >NUL 2>&1
)
ECHO "Copy complete"
0 голосов
/ 17 февраля 2020

Решено, см. Комментарий Стефана.

Завершенный скрипт:

    @ECHO OFF
    SETLOCAL ENABLEDELAYEDEXPANSION
    @REM Set defaults
    SET BASE_FLDR=.\
    SET BLD_TYPE=Release
    @REM Check if base folder specified, if not default to current location
    IF NOT [%1] == [] SET BASE_FLDR=%1
    @REM Check if build type specified, if not default to Release
    IF NOT [%2] == [] SET BLD_TYPE=%2
    SET DST_FLDR=%BASE_FLDR%sc_app
    @REM Display parameters
    ECHO Base folder: %BASE_FLDR%
    ECHO Build type : %BLD_TYPE%
    ECHO Destination folder : %DST_FLDR%
    ECHO Please wait
    @REM Does destination folder exist?
    IF NOT EXIST %DST_FLDR% (
        ECHO Creating %DST_FLDR%
        MKDIR %DST_FLDR%
    )
    @REM Create list of subfolders to search
    ECHO Copying DLL's and EXE's to %DST_FLDR%
    FOR /F "delims=" %%F IN ('"DIR %BASE_FLDR% /S /B /A:D | FINDSTR /EIC:"%BLD_TYPE%" "') DO (
        ECHO | SET /p="."
        @COPY /Y "%%F"\*.DLL "%DST_FLDR%" >NUL 2>&1
        @COPY /Y "%%F"\*.EXE "%DST_FLDR%" >NUL 2>&1
    )
    ECHO "Copy complete"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...