Board logo

标题: [文件操作] [已解决]批处理如何根据扩展名获取不带文件名的完整路径? [打印本页]

作者: y169168712    时间: 2011-4-17 02:48     标题: [已解决]批处理如何根据扩展名获取不带文件名的完整路径?

本帖最后由 y169168712 于 2011-4-17 13:16 编辑

在d盘里有很多txt文件,我想得到它们不带文件名的路径,


例如有一个文件name.txt
D:\目录名\目录名\name.txt

我想得到
D:\目录名\目录名
作者: TX_kakashi    时间: 2011-4-17 03:00

要过滤重复的路径么?
  1. @echo off&setlocal
  2. for /f "tokens=*" %%a in ('dir/b/s/a-d *.txt') do (
  3.      echo %%~dpa
  4. )
  5. pause
复制代码

作者: batman    时间: 2011-4-17 12:11

  1. @echo off
  2. for /r d: %%a in (*.txt) do echo %%~dpa
  3. pause>nul
复制代码

作者: y169168712    时间: 2011-4-17 13:25

本帖最后由 y169168712 于 2011-4-17 13:27 编辑

能过滤重复路径的就更好了
作者: Batcher    时间: 2011-4-17 13:30

4# y169168712


顶楼发帖时为何不说清楚这个需求呢?
作者: CrLf    时间: 2011-4-17 13:47

本帖最后由 zm900612 于 2011-4-17 14:37 编辑
  1. @echo off
  2. for /r /d %%a in (*) do if exist "%%a\*.txt" echo %%a
  3. pause
复制代码

作者: y169168712    时间: 2011-4-17 14:09

本帖最后由 y169168712 于 2011-4-17 14:17 编辑

5# Batcher
下次我会把问题一次性都说完的,这次是2楼的兄弟提醒了我
作者: TX_kakashi    时间: 2011-4-17 15:08

那改进一下便可.
  1. @echo off&setlocal
  2. for /f "tokens=*" %%a in ('dir/b/s/a-d d:\*.txt') do (
  3.      if not defined "%%~dpa" (echo %%~dpa&&set ""%%~dpa"=s" >nul 2>nul)
  4. )
  5. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2