batch-file - 需要帮助简化批处理文件
问题描述
我有一个批处理文件,它根据用户输入复制一些文件,我想简化它。如果用户在提示符中键入字母 A,它会将 A.txt 从 C:\ 复制到 E:\ 本质上,它是这样的:
set /p letter="Enter a letter of the alphabet"
if /i [%letter%]==[A] GOTO LetterA
if /i [%letter%]==[B] GOTO LetterB
if /i [%letter%]==[C] GOTO LetterC
:LetterA
robocopy C:\ E:\ A.txt
:LetterB
robocopy C:\ E:\ B.txt
:LetterC
robocopy C:\ E:\ C.txt
:end
对于 IF 语句和它调用的 goto 命令,我是否必须为字母表中的每个字母输入/复制每一行?我可以使用 for 循环或 if 语句更轻松地完成此操作,并且基本上说..
For %letter%
robocopy C:\ E:\ %letter%.txt
或者像 IF 语句一样,引用 list.txt 文件。而 list.txt 中包含所有字母。
IF %letter% in (C:\list.txt)
then robocopy C:\ E:\ %letter%.txt
解决方案
基本上,您会寻找一种方法来确保输入在预定义的集合内。你可以这样做:
@echo off
setlocal
:loop
set /p "letter=Enter a letter of the alphabet: "
echo %letter%|findstr /ix "a b c d e f g h i j k l m n o p q r s t u v w x y z" || goto :loop
ECHO robocopy C:\ E:\ %letter%.txt
(测试后去掉大写ECHO
即可真正启用该robocopy
命令)
推荐阅读
- javascript - 使用 javascript 按索引重新排序数组
- ios - 根据indexpath更新UITableView中的progressView
- html - 如何在内联样式背景图像上显示 CSS 背景颜色
- bash - Bash 使用源代码加载配置文件
- c# - C# 如何在 LINQ 查询中访问 SelectListItem 的 Selected 属性的值?
- sql - sql左连接问题没有给出右表不匹配的结果
- ajax - 单元侦听器启动多个请求
- apache-spark - Spark 忽略执行器和驱动程序内存的配置
- sql - 如何在用作存储过程输入的临时表上使列可选?
- python - Python 2.7 OpenCV matchTemplate,只获取最佳匹配