Мне нужно переместить файл из одного каталога в другой без каких-либо фиксированных путей в команде копирования / вставки. Это означает, что я, вероятно, не могу иметь команду копирования / вставки в одну строку:

Структура папок выглядит следующим образом:

  • Главная папка
    • Files.dir
    • log.dir
    • executable.bat

Это мой код:

cd log
if exist flist.log del flist.log
cd ..
cd Files
dir /b /a-d>flist.log
copy flist.log
cd ..
cd log
paste flist.log

Или, если возможно, есть что-то вроде этого:

cd log
if exist flist.log del flist.log
cd ..
cd Files
dir /b /a-d>flist.log (save in Files.dir without a fixed path)

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

Спасибо :)

2 ответа2

0

Вы не Копирование / вставка файлов обычно не существует в командной оболочке.

Вместо этого вы прямо указываете, куда перемещать файл:

if exist log\flist.log del log\flist.log

cd Files
dir /b /a-d > flist.log

move flist.log ..\log\

Или, на самом деле, прямо скажи ему, куда писать файл в первую очередь:

cd Files
dir /b /a-d > ..\log\flist.log

Нет никаких оснований для вашего требования "Нет посторонних". Как видите, ни в одном из приведенных выше примеров не используется фиксированный путь; все команды принимают относительные пути.. или без) так же, как cd .

0

Похоже, цель вашего сценария - создать список файлов, которые содержатся в files подкаталогов вашего текущего рабочего каталога, причем этот список помещается в log подкаталогов, который находится рядом с files .

Относительные пути работать, не нужно быть cd -ing повсюду.

dir /b /a-d files >log\flist.log

Это намеренно, что вы получите две копии списка, что, как кажется, имеет место в вашем первом примере, а затем выполните это с

copy /y log\flist.log files\flist.log

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .