许多问题批量编码......事情似乎并没有像我期望的那样发挥作用。
所以我使用批处理文件从.as文件中提取文本数据。我设法让它工作但是它创建了一堆垃圾/空txt文件,没有从中提取任何有用的内容。所以我创建了另一个从main.bat调用的批处理文件,并且应该清理空文件,但是即使main.bat中的for循环几乎相同,变量也是不正确的。
的完整副本问题是下面的代码(来自Clean.bat第33行)#note以下代码已删除大部分计数器和回声
@echo off
cls
setlocal enabledelayedexpansion
for /r %%Z in (*.txt) do (
SET /a count=0
for /F "eol= tokens=1 delims=," %%A in ("%%Z") do (
if /i %%A==LN set /a count+=1
)
if !count! EQU 0 (
rem del "%%Z")
)
pause
在此代码中,%% A和%% Z都等于应该从中读取的文件的完整文件路径。当%% A应该是有问题的txt文件的标记1时。因为这个计数总是= 0所以它总是删除文件(这就是del被注释掉的原因)。
这是一个应该从中读取的文件的示例
LN,296,textE("海沿いに立つ高級フィットネスリゾート施設。");
LN,299,textE("夏休み、俺たち兄妹は、陸上の強化合宿という「名目」のもと、\nこの施設を訪れていた。");
LN,302,textE("莉 央\nすごい、すごい!!おしゃれなところだねー!");
基本上它应该检查每一行,如果LN不存在作为任何行的第一个标记,它将删除该文件。 (因为这意味着文件为空,除了原始.as文件的行数)
答案 0 :(得分:1)
根据你所说的话,这可能对你有用:
我将您的观点解释为如果文件不包含LN
作为任何一行的第一个标记,那么它将被删除。
@echo off
for /r %%Z in (*.txt) do (
SET "count="
for /F "usebackq delims=," %%A in ("%%Z") do (
if /i "%%A"=="LN" set count=1
)
if not defined count echo del "%%Z"
)
pause
这是另一种做同样事情的方法:
@echo off
for /r %%Z in (*.txt) do (
findstr "^LN," "%%Z" >nul || echo del "%%Z"
)
pause