Batch file 我的非路径特定批处理脚本仅在某些路径下工作…;为什么?

Batch file 我的非路径特定批处理脚本仅在某些路径下工作…;为什么?,batch-file,scripting,Batch File,Scripting,我制作了以下批处理脚本: ::@ECHO OFF echo %date% %time% Starting File Splitter set year=%date:~-4% set month=%date:~3,2% set day=%date:~0,2% set hour=%time:~0,2% set minute=%time:~3,2% set second=%time:~6,2% set folderName=%year%-%month%-%day%-%hour%-%minute%-

我制作了以下批处理脚本:

::@ECHO OFF
echo %date% %time%  Starting File Splitter

set year=%date:~-4%
set month=%date:~3,2%
set day=%date:~0,2%
set hour=%time:~0,2%
set minute=%time:~3,2%
set second=%time:~6,2%
set folderName=%year%-%month%-%day%-%hour%-%minute%-%second%
set folderName=%folderName: =%
SET logger="%~dp0"\%folderName%.log

cls
setlocal enabledelayedexpansion

set ctr=0
set name=Startup
for /f "tokens=*" %%1 in (pppclient.log) do (
    set inline=%%1
    Echo.!inline! | findstr /C:"Starting PosPay Client... ">nul && (
        set name=Startup
        set /a ctr+=1
    )
    Echo.!inline! | findstr /C:"/purchase ">nul && (
        set name=Purchase
        set /a ctr+=1
    )
    Echo !inline! >>!ctr!_!name!.log
)
首先,这正是我想要的。然而,有时当我移动\复制粘贴脚本到另一个路径时,它突然什么也不做。
它会说找不到pppclient.log文件-但文件在那里!原因有三个可能的原因:

  • 您可能希望当前工作目录是批处理文件的目录。但是当前的工作目录可能是另一个。添加一行
    echo工作目录为:%CD%
    ,查看执行批处理文件时的当前工作目录

  • 设置为允许列出文件夹中的文件和子文件夹,但现在允许读取文件中的数据

  • 文件pppclient.log当前由另一个应用程序打开,这意味着只要该应用程序打开该文件(用于写操作),其他应用程序就无法读取或写入该文件

  • 对日志文件的读取访问经常被写入此日志文件的应用程序阻止


    您可以使用Sysinternals(Microsoft)提供的免费工具查找日志文件“找不到”的原因。

    脚本是否输出了一些错误?什么是
    不工作