2014-09-02 2 views
0

У меня есть эта проблема, которую мне нужно решить для некоторых оконных машин (все работает нормально для Linux). Мне нужно перевести скрипт для работы в .bat-файле. Это мой сценарий (я запустить его в cygmanager на машине и работает, но это не является приемлемым решением для меня, он должен быть родным окном):Создайте файл, содержащий значения, разделенные вкладками, с использованием командного файла

#!/bin/bash 

for i in `cat $1` 
do fname=$(basename $i) 
fbname=${fname%.*} 
echo $fbname 
done > intermediar.txt 

for i in `cat intermediar.txt` 
do initial="$(echo $i |head -c 1)" 
echo $i $i.wim $i.wim $initial '"'`date +%m/%d/%y` "12:00:00"'"' "1" "NULL" "NULL" "NULL" "NULL" 
done > intermediar2.txt 

cat intermediar2.txt | awk -F " " '{OFS="\t"; print $1,$2,$3,$4, "09/02/2014 12:00:00",$7,$8,$9,$10,$11}' | sed 's/NULL//g' | tee $2 

rm -rf intermediar.txt intermediar2.txt 

Что делает этот скрипт, или то, что я нужны окна двойника сделать, это:

  1. составить список всех файлов в каталоге и создать файл со всеми своими именами
  2. создают следующие вкладки разделены строки, в этом файле, для всех имена файлов добавлены:

    name of the file without extention (in CAPS)|name of the file with extention (CAPS are not important here)|name of the file with extention (CAPS for the name, no-CAPS for the extention)|first letter of the name of the file|Date and time of the machine (mm/dd/yyyy hh:mm)|1 (just the number 1 for all the rows)|NULL|NULL|NULL|NULL (i put NULL just to indicate that i have 4 colums containing nothing, but they need to exist separated by TAB) 
    
  3. каждая строка должна заканчиваться значением возврата каретки (кроме последнего).

Если это не очевидно, это часть файла, который добавляет данные в базы данных mssql. возможно, я не единственный, кто ищет ответа на это. Итак, благодаря всем вам, кто хочет внести свой вклад в это!

Позже Редактировать: Я разместил это здесь, потому что я совсем не умел в cmd, и я ничего не пробовал. Я не знаю, как подойти к этой проблеме с точки зрения batch/.bat/windows, но я пытаюсь достичь этого файла, выглядящего как [this] (http://i.imgur.com/cpw4J9q.png)! Спасибо, что все это помогает!

+0

добро пожаловать в SO. что вы пробовали? какие проблемы вы нашли? сообщите нам, что не сработало для вас и для чего вам нужна помощь. Мы будем рады помочь. –

ответ

0

Хотя может быть несколько способов для достижения этой цели, ниже один из способов, используя пакетный файл с помощью PowerShell -

@echo off          

for /f %%x in ('wmic os get localdatetime ^| findstr /b [0-9]') do set TS=%%x          

set yyyy=%TS:~0,4%          
set mm=%TS:~4,2%           
set dd=%TS:~6,2%           
set hh=%TS:~8,2%           
set min=%TS:~10,2%          

setlocal enabledelayedexpansion          
for /f "delims=" %%i in ('dir /b /A:-D') do (          
    for /f "delims=" %%a in ('powershell -command \"%%~ni\".toupper^(^)') do set fname=%%a         
    for /f "delims=" %%b in ('powershell -command \"%%~xi\".tolower^(^)') do set fextn=%%b         
    echo !fname! !fname!!fextn! !fname!!fextn! !fname:~0,1! %mm%/%dd%/%yyyy% %hh%:%min% 1    
)         

Образец испытываемого output-

D:\Scripts>dir /b /a:-d 
1.xml 
2.jpg 
draft1.bat 
draft2.bat 
input1.csv 
input2.csv 

D:\Scripts>draft1.bat 
1  1.xml 1.xml 1  09/02/2014 22:32  1 
2  2.jpg 2.jpg 2  09/02/2014 22:32  1 
DRAFT1 DRAFT1.bat  DRAFT1.bat  D  09/02/2014 22:32  1 
DRAFT2 DRAFT2.bat  DRAFT2.bat  D  09/02/2014 22:32  1 
INPUT1 INPUT1.csv  INPUT1.csv  I  09/02/2014 22:32  1 
INPUT2 INPUT2.csv  INPUT2.csv  I  09/02/2014 22:32  1 

Приветствия, G

+0

Мой вывод выглядит следующим образом [ссылка] (http://i.imgur.com/CsmPdzn.png); Я не умею с cmd, поэтому я не могу точно понять, где я могу заставить файл читать другую папку, чем тот, который находится .bat-файл, а также я добавил >> text.txt в конце, надеясь экспортировать все эхо в файл. результат на моей машине был таким же, как на изображении, указанном выше. Спасибо за ответ и за помощь ... очень ценю! Cheers, D –

+0

Можете ли вы опубликовать вывод 'dir/b/a: -d' из каталога, где хранятся ваши файлы? Точно так же, как я сделал на моем примере выше – gbabu

+0

Я не могу, у меня есть более 1k файлов, но это последняя часть команды [link] (http://i.imgur.com/MVp60FV.png); Я добавил код, который вы дали мне в .bat-файл, а также есть выходной файл ... я не могу их там включить и испортить свой список, но я хотел проверить ваш код. я думаю, что это очень хорошо, но для этого нужны только незначительные изменения. –

Смежные вопросы