DOS批处理过程将文件移动到相关文件夹

时间:2009-08-07 21:38:45

标签: batch-file dos

我想写一个DOS批处理程序,它将通过我的目录并将所有* .txt文件移动到dest文件夹以从txt文件的第一个字符开始

实施例
abc.txt将移动到文件夹“a”
def.txt将移动到文件夹“d”
等等...

6 个答案:

答案 0 :(得分:4)

从命令行:

for %i in (*.txt) do (set FOLDER=%i & move %i %FOLDER:~0,1%)

在批处理文件中,你必须加倍%s,如下所示:

for %%i in (*.txt) do (set FOLDER=%%i & move %%i %FOLDER:~0,1%)

答案 1 :(得分:0)

我认为问题的关键是提取第一个字母。

你可以使用~char来提取文件名的第一个字母

set str=filename
echo %str:~0,1%
f

答案 2 :(得分:0)

您可以使用biterscripting chex命令(字符提取器)来提取文件名的第一个字符。这是脚本。假设您的文件位于C:\ My Directory。

# Script move1.txt
# Change directory to My Directory.
cd "C:\My Directory"

# Collect a list of *.txt files.
var str list ; lf -n "*.txt" > $list

# Go thru files one by one.
while ($list <> "")
do

    # Get the next file.
    var str file ; lex "1" $list > $file

    # $file now has full path of a found *.txt file. Get just the file name.
    var str filename ; stex -p "^/^l[" $file > $filename

    # $filename has just the file name. Get the first character.
    var str firstchar ; chex -p "1" $filename > $firstchar

    # $firstchar now has the first char of file name. The folder where we
    # want to move this file is, then, C:\Destimation Folder\$firstchar .
    var str destfolder ; set $destfolder = "C:\Destination Folder\"+$firstchar

    # Move $file to $destfolder.
    system move ("\""+$file+"\"") ("\""+$destfolder+"\"")

done

脚本是biterscripting(http://www.biterscripting.com)。要尝试将脚本保存为C:\ Scripts \ move1.txt,请启动biterscripting,输入以下命令。

script move1.txt

如果需要定期运行脚本,请在任务计划程序中安排以下命令。

"C:\biterScripting\biterScripting.exe" "move1.txt"

我没有测试过脚本,在示例文件上测试它。 确保将“C:\ My Directory”和“C:\ Destination Folder”更改为正确的值。始终对文件名和路径使用双引号。

答案 3 :(得分:0)

这是一行:

一般形式: 对于%a in(a b c d e f g h i j k l m n o p q r s t u v w y y z),如果不存在则%a \ nul md%a&amp;如果存在%a *移动%a *%a

这个mod只会执行txt文件(根据OP):    ...如果存在%a * .txt移动%a * .txt%a

或者一个人可以在蝙蝠中增强这个“......如果存在%% a *%1移动%% a *%1 %% a”以允许在命令行上进行扩展匹配;这可能需要%1中的点(现在不想测试它。如果这是一个问题,你可以总是有一个if%1!==!来选择一般表格和%1特定已经提供了点。

当然,%a用于命令行和蝙蝠,将%s正常加倍(%a - &gt; %% a)。

此解决方案将避免文件名中的空格错误,但您最终会为每个字母添加一个子目录(即使没有以该特定字母开头的文件)。

现在我输入的时间比输入上面的原始行更长......: - )

答案 4 :(得分:0)

计算当前文件夹中的所有TSV文件。

for /f "delims=|" %%f in ('dir *.tsv /b') do (
echo %%~nf
findstr /R /N "^" %%f | find /C ":"
)

答案 5 :(得分:-1)

copy sourcepath\a*.txt destinationpath\a

复制sourcepath \ b * .txt destinationpath \ b