Kra*_*ons 3 windows cmd batch-file
我想要一个文件夹中的所有文本文档的批处理脚本.这是我到目前为止所管理的:
@ECHO off
title Test
set dir1=C:\Users\Family\Desktop\Example
:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit
:test
cls
echo running loop test
FOR %%n in (%dir1% *.txt) DO echo %dir1%\%%n
echo Done
pause
Run Code Online (Sandbox Code Playgroud)
我想输出的是:
running loop test
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done
Run Code Online (Sandbox Code Playgroud)
但我明白了:
running loop test
C:\Users\Family\Desktop\Example\C:\Users\Family\Desktop\Example
C:\Users\Family\Desktop\Example\doc 1.txt
C:\Users\Family\Desktop\Example\doc 2.txt
Done
Run Code Online (Sandbox Code Playgroud)
jeb*_*jeb 11
主要问题似乎是(%dir1%*.txt)之间的空间
它可能是
@ECHO off
title Test
set "dir1=C:\Users\Family\Desktop\Example"
:Start
cls
echo 1. test loop
echo 2. Quit
set /p choice=I choose (1,2):
if %choice%==1 goto test
if %choice%==2 exit
:test
cls
echo running loop test
FOR %%X in ("%dir1%\*.txt") DO echo %%~dpnX
echo Done
pause
Run Code Online (Sandbox Code Playgroud)
引号用于避免路径中的空格或其他特殊字符出现问题.
编辑:
该%%~dpnX是用于扩展的文件名%%X来
d=驱动器(C :)
p=路径(\ Users \用户家庭\桌面\实施例)
n=文件名(TEST1)(不扩展)
f=完整文件名(C:\ Users\Family\Desktop\Example\test1.txt).
这里解释了可能的修饰符FOR /?