我希望批处理文件自动找到名为“ 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
答案 0 :(得分:1)
当我正确理解您的修改后,您会尝试查找文件(位置未知)并获取其实际位置。
以下内容将在file.txt
中查找文件C:\users\
,它是子文件夹,并将列表写入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
(第三个如果您也需要检查CD驱动器,请与5
对齐)
答案 1 :(得分:0)
由于您的问题尚不清楚,因此我在此处采取了暗中行动,但我假设您在文件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