Простая командная строка DOS для игнорирования данных в строке после последней обратной косой черты - PullRequest
1 голос
/ 12 ноября 2008

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

Ответы [ 2 ]

4 голосов
/ 12 ноября 2008

Вы можете использовать что-то вроде этого:

@echo off
set filename="c:\temp\my files\file.txt"
for /f "tokens=*" %i in ("%filename%") do set filename="%~dpi"
echo %filename%

Результат будет "c:\temp\my files\".

4 голосов
/ 12 ноября 2008

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

Если у вас есть Perl, вы можете сделать что-то вроде этого:

#!/usr/bin/perl -w

while (<>) {
    s/\\[^\\]*$//; # this removes a the last backslash and anything after it
    mkdir $_;
}
...