Отображение текущего местоположения пути (с косой чертой) любого файла в текстовом файле - PullRequest
0 голосов
/ 12 января 2019

Я хочу, чтобы командный файл автоматически находил местоположение файла с именем "file.txt". Я хочу, чтобы командный файл печатал точно слово в слово, косая черта, путь файла, присутствующего на моем компьютере !! Моя основная идея заключается в том, что местоположение файла должно быть найдено в командном файле независимо от того, где он находится на моем компьютере.

Например, если путь к файлу каталога " C: \ users \ desktop \ folder \ file.txt ", я хочу, чтобы пакетный файл автоматически нашел этот файл, скопируйте его путь и отправьте его точно так же, как он есть, в другой текстовый файл с именем скажем "location.txt". Я надеюсь, что вопрос ясен сейчас !!

Но следующее, я думаю, относится только к текущему пути каталога командного файла, а не к любому другому файлу.

@echo off
setlocal enabledelayedexpansion
set "mypath=%cd%"
set "stringtoreplace=toto"
(for /f "delims=" %%a in ('type test.txt') do (
set "content=%%a"
set "content=!content:%stringtoreplace%=%mypath%!"
echo !content!
))>output.txt

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Я принимаю удар в темноте, потому что ваш вопрос неясен, но я предполагаю, что у вас есть список файлов в файле test.txt, который по какой-то странной причине содержит слово toto в нем. Если это так, то это должно быть более или менее то, что вы хотите.

Он будет обращаться к файлу, получать каждую строку, а затем искать toto и заменять его ничем, а затем выполнять поиск, используя dir /s с findstr

@echo off
setlocal enabledelayedexpansion
set "stringtoreplace=toto"
(for /f "delims=" %%a in (test.txt) do (
    set "content=%%a"
    set "content=!content:%stringtoreplace%=!"
    for /f %%i in ('dir /b /a-d /s ^| findstr !content!') do echo %%i
)
)>>output.txt
0 голосов
/ 13 января 2019

Когда я правильно понимаю ваши изменения, вы пытаетесь найти файл (с неизвестным местоположением) и получить его фактическое местоположение.

Следующее будет искать файл (ы) file.txt в C:\users\, и его подпапки amd запишут список в output.txt:

dir /s /b "C:\users\file.txt" >output.txt

Редактировать

Чтобы найти файл «где бы он ни находился в системе», вам необходимо выполнить поиск на каждом диске.

for /f "tokens=2 delims==:" %%a in ('wmic logicaldisk where "drivetype=3" get caption /value') do (
  dir /s /b "%%a:\file.txt" >>output.txt
)

(drivetype=3 - это все ваши жесткие диски. Если вы также хотите проверить флэш-диски, добавьте эту же строку во второй раз, но измените 3 на 2 (и третью строку с 5, если надо проверять и CD-дисководы тоже))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...