[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理for & dir命令,路径带有空格,怎么解决?

for /f "delims=" %%a in ('dir /b/a-d/oN %folder%\*.mp4 %folder%\*.mp3') do (

for /f "delims=" %%a in ('dir /b/a-d/oN "%folder%"\*.mp4 "%folder%"\*.mp3') do (


for /f "delims=" %%a in ('dir /b/a-d/oN "%folder%\*.mp4" "%folder%\*.mp3"') do (

for /f "usebackq" %%a in ('dir /b/a-d/oN "%folder%\*.mp4" "%folder%\*.mp3"') do (

for /f "usebackq" %%a in ('dir /b/a-d/oN ""%folder%"\*.mp4" ""%folder%"\*.mp3"') do (

以上几种方法都试了,不会闪退,但无效,不能正常识别路径。只在目录的旁边生成部分无后缀名的文件。例如“喜庆 音乐”旁边生成“喜庆”无扩展名的日志类文档

本帖最后由 bcetl 于 2022-3-31 12:46 编辑

回复 29# Batcher

规律不是很明显。并无太大规律

回复 30# qixiaobin0715

嗯,是的。后续脚本已经用cd定位路径了。

2位大神帮我看看脚本哪里出错了。。。直接回车闪退了,暂时试了几种方法都没找到原因。
编码是ansi、utf8都试了。

setlocal enabledelayedexpansion
::固定路径
set folder=H:\1111(这行删除了,也是空值闪退)
:begin
set /p var=
if %var%==0 goto dell(请忽略)
if %var%==1 goto hhgg(请忽略)
if %var%==2 goto lrr(请忽略)
if %var%==. goto bye(请忽略)
if %var%==+ goto gg(执行有效,备选方案)

::无定义、无赋值、空值,直接回车,继续执行;
::if "%var%"== (echo 空值) else echo true
::if not defined var goto gg
if defined var (goto bye) else goto gg
::if "%var%==" (echo 空值) else echo true
::if "%var%"=="" (echo 空值) else echo true

:gg
@echo 测试执行
pause
pause

:bye
@echo 测试退出
pause



就是无法直接回车,空值跳转

TOP

回复 28# bcetl
也可用cd命令定位路径。

TOP

回复 28# bcetl


    如果有规律,可以试试在BAT脚本里面自动找到那些文件夹。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 27# Batcher


    好的,谢谢。。。遇到特殊符号的路径,我会先修正一下。因为要处理的文件比较多,分布文件夹也多。老是把脚本复制来复制去,也挺麻烦的。

TOP

回复 26# bcetl


提个小建议,尽量少拖放。
文件夹名称里面可能存在的特殊字符有可能让代码出错。
有条件的情况下尽可能通过别的方式执行BAT脚本。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 25# Batcher


    是的。如果只是单个,就没必要搞脚本了。大量文件,搞脚本才轻松。

TOP

回复 24# bcetl


    你是把一个文件夹拖放的bat脚本上面执行的?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 23# Batcher


   


    大神的脚本没有报错,主要是这一段保存路径问题:>> "%folder%\%date:~5,2%-%date:~8,2%.txt"


比如C:\11\2 2\A A\b b.txt,执行结果是C:\11\2 2\下生成一个名字叫“A”的无后缀名文件,即C:\11\2 2\A,用记事本打开,是bat的执行日志

现在我直接用你教过的脚本定位方法解决。
set date=%date:~5,2%-%date:~8,2%
set /p folder=
cd /d "%folder%"
后面是>>"%date%.txt"

或者,保存路径使用双重引号,也可以解决,是这个:>>" "%folder%"\%date%.txt" 也可以。

TOP

回复 21# bcetl


    14楼的那种代码写法在你电脑上测试的时候有什么报错信息吗能否发出来看看?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 19# buyiyang

set /p folder=
for /f "delims=" %%a in ('dir /b/a-d/oN %folder%\*.mp4 %folder%\*.mp3') do (
echo %%~na>> ""%folder%"\%date:~5,2%-%date:~8,2%.txt"
if "%%~xa"==".mp3" (for /f "tokens=1-2 delims=-" %%i in ("%%~na") do (echo %%j>> ""%folder%"\去歌手纯歌名%date:~5,2%-%date:~8,2%.txt"))
)

TOP

回复 20# Batcher


    加一对没用,还是要加两对才有用。:lol

TOP

回复 17# bcetl


    以后别这样写了,容易出错。简简单单加一对引号就够了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 18# bcetl


    你这个确实是我没想到的,你能把代码发出来吗?

TOP

回复 13# buyiyang


    你提供的方向是对的,谢谢

TOP

返回列表