Исключить %~dp0 из строкового вывода в пакетном файле Windows?

Я использую robocopy в пакетном файле, чтобы скопировать все из каталога, в котором запущен пакетный файл, в папку назначения, например:

      robocopy %~dp0 "D:\Destination Folder" /E

В командном окне выполнение приведенной выше команды выводит полный путь к следующему:

      C:\Folder\Another Folder\Batch File Runs From This Folder\This Folder Gets Copied\File.txt

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

      This Folder Gets Copied\File.txt

В Robocopy нет возможности сделать это, и я рассмотрел такие вещи, какfind.exeиfindstr.exeно они не могут исключить часть строки, у них обоих есть только/vопция, которая может скрыть строки, содержащие указанный вами текст. Это бесполезно, поскольку скрытие скроет всю строку и не отобразит вывод.

Я знаю, что если есть способ сделать это, я могу просто поместить канал в конец строки robocopy с чем-то вроде этого, если существует такая вещь, как приложение «hidestring»:

          robocopy %~dp0 "D:\Destination Folder" /E | hidestring %~dp0

Это всего лишь пример того, как это может работать, но, как я уже сказал, такой программы «hidestring» не существует — хотелось бы, чтобы она была!

У Робокопи есть/LEV:nвариант, гдеn— это количество уровней каталогов, которые вы хотите скопировать, но использование этой опции не влияет на выходные данные, выводится полный путь, включая полный путь.

Есть какой-либо способ сделать это?

Приветствую вас, ребята.

РЕДАКТИРОВАТЬ: @Jeff Zietlin, вот полное содержимое командного окна:

      C:\Folder\ToBeCopied>robocopy C:\Folder\ToBeCopied\ "D:\Destination" /E /w:0 /r:0 /NP /NS /NDL /NJH /NJS /XX

            New File                    C:\Folder\ToBeCopied\Copy Current Directory.bat
            New File                    C:\Folder\ToBeCopied\Folder With File\File.txt

C:\Folder\ToBeCopied>pause
Press any key to continue . . .

Где выше сказано следующее:

      New File                    C:\Folder\ToBeCopied\Copy Current Directory.bat
New File                    C:\Folder\ToBeCopied\Folder With File\File.txt

Я хочу, чтобы он просто сказал следующее:

      New File                    ToBeCopied\Copy Current Directory.bat
New File                    ToBeCopied\Folder With File\File.txt

Другими словами, не отображайте путь к текущему каталогу.C:\Folder(он же%~dp0)

РЕДАКТИРОВАТЬ 2:

Джефф, если я запущу это в пакетном файле под названием « Копировать текущий каталог.bat»

      pushd %~dp0
robocopy . "D:\Destination" /E
popd

pause

Я получаю это в командном окне:

      C:\Folder\ToBeCopied>pushd C:\Folder\ToBeCopied\

C:\Folder\ToBeCopied>robocopy . "D:\Destination" /E

-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------

  Started : 11 June 2021 17:13:45
   Source : C:\Folder\ToBeCopied\
     Dest : D:\Destination\

    Files : *.*

  Options : *.* /S /E /DCOPY:DA /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

                           1    C:\Folder\ToBeCopied\
100%        New File                 167        Copy Current Directory.bat
          New Dir          1    C:\Folder\ToBeCopied\Folder With File\
100%        New File                   0        File.txt

------------------------------------------------------------------------------

               Total    Copied   Skipped  Mismatch    FAILED    Extras
    Dirs :         2         1         1         0         0         0
   Files :         2         2         0         0         0         0
   Bytes :       167       167         0         0         0         0
   Times :   0:00:00   0:00:00                       0:00:00   0:00:00
   Ended : 11 June 2021 17:13:45


C:\Folder\ToBeCopied>popd

C:\Folder\ToBeCopied>pause
Press any key to continue . . .

0 ответов

Другие вопросы по тегам