首页 > 解决方案 > 搜索文件并更改为另一个

问题描述

我需要帮助,我编写了这段代码,它查找文件“filename.txt,如果找到另一个文件的副本”filemame2.txt,但我希望它问我在哪个驱动器 c:\ 或 d:\ 我想搜索并更改您找到的文件。你能帮助我吗?

@echo off
echo search...
if exist "filename.txt" (
echo file filename.txt found.
xcopy c:\filename.txt /y filename2.txt
) else (
echo file filemame.txt does not found.
)
echo finished.
echo press any key to exit...
pause >nul

标签: windowsbatch-filecmd

解决方案


有许多不同的方法可以同时使用choiceset /p

一种方法是简单地使用 goto,根据在choice选择实例中设置的错误级别,我们只需使用字母C并且D不需要输入,您按键盘上的CD,它将执行选择命令。

@echo off
echo select the drive where the file should exist..
choice /C CD
if %errorlevel%==2 call goto :ddrive
if %errorlevel%==1 call goto :cdrive
:cdrive
if exist "c:\filename.txt" (xcopy /y "c:\filename.txt" /y "c:\filename2.txt") else (echo C:\filename.txt does not exist)
goto :EOF
:ddrive
if exist "d:\filename.txt" (xcopy /y "d:\filename.txt" "d:\filename2.txt") else (echo D:\filename.txt does not exist)
echo finished.
pause

看到你只有 2 个选项,第二个 if 可以消除,但我把它留在了,因为你可能想添加更多驱动器。

对于这些方面的帮助, opencmd.exe和 ru choice /?set /?并且为了更好的措施,if /?

根据您的评论,如果您想在提示符中包含完整路径,即在提示符处,您必须键入您认为文件存在的驱动器号和路径。即c:\some dir

@echo off
set /p "source=Please enter path to search file :"
set /p "dest=Please enter path to copy file to :" 
if exist "%source%\filename.txt" (xcopy /y "%source%\filename.txt" /y "%dest%\filename2.txt") else (echo C:\filename.txt does not exist)
echo finished.
pause

如果要搜索文件,则需要使用dir /a-d /b /s filename.txt并将其设置为变量。


推荐阅读