удалить файлы с их именем и путем в другом файле .bat - PullRequest
0 голосов
/ 09 ноября 2018

Мне нужно знать, возможно ли создать пакетный код, прочитать файл file.txt и, в соответствии с имеющейся там информацией, получить доступ к пути к папке и удалить файл. В моем файле .txt, является результатом запроса SQL.

my_file.txt

file_name, file_path
abcd, D:/user/desktop/teste123
efgh, D:/user/desktop/folder789

Пакет должен прочитать «имя_файла» (чтобы узнать файл для удаления) и путь_файла (чтобы узнать, где удалить).

Возможно ли это? Помогите мне, пожалуйста

Спасибо.

1 Ответ

0 голосов
/ 09 ноября 2018

Вы должны запустить цикл for и разделить на делитере , и использовать каждый из них в качестве переменной.

Итак, в качестве непроверенного примера, здесь я разделю записи файла и назначу 2 токена %%i и %%j

@echo off
for /f "tokens=1,2 delims=," %%i in (my_file.txt) do echo "%%i" "%%j"

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

Видя, что вы хотите удалить, это, вероятно, будет что-то вроде:

@echo off
for /f "tokens=1,2 delims=," %%i in (my_file.txt) do echo del "%%j\%%i"

Где вы бы просто удалили эхо, чтобы выполнить фактическое удаление.

Согласно вашему комментарию, чтобы пропустить первую строку и исключить строку **rows affected, которую вы можете использовать:

for /f "tokens=1,2 skip=1 delims=," %i in ('more my_file.txt ^| findstr /VI /C:"rows affected"') do del "%%j\%%i"

альтернативно, видя, что вы используете больше, вы можете исключить skip=1 и просто использовать +1 в команде more.

for /f "tokens=1,2 delims=," %i in ('more +1 my_file.txt ^| findstr /VI /C:"rows affected"') do del "%%j\%%i"
...